首页 > web前端 > js教程 > 文档:在带有 Axios 的 React Native 应用程序中使用 Direct Line API

文档:在带有 Axios 的 React Native 应用程序中使用 Direct Line API

DDD
发布: 2025-01-14 14:33:48
原创
189 人浏览过

Documentation: Using Direct Line API in a React Native Application with Axios

本文档详细介绍了在 React Native 应用程序中使用 Microsoft Direct Line API,使用 JavaScript、Axios 和 WebSocket 与 Copilot Agent Bot 进行通信。


先决条件

继续之前,请确保满足以下条件:

1。 Direct Line 秘密: 从 Coilot 聊天机器人获取 Direct Line 秘密。

2。 React Native 开发环境: 设置一个工作的 React Native 项目。

3。已安装 Axios 库: 使用 npm install axios 或 yarn add axios 将 Axios 添加到项目依赖项中。

4。 WebSocket 支持: 确保 WebSocket API 与您的应用程序环境兼容。

5。基础知识: 熟悉 JavaScript、React Native 和 RESTful API。


目录

  1. 身份验证

  2. 生成令牌

  3. 刷新令牌

  4. 开始对话

  5. 重新连接对话

  6. 向机器人发送活动

  7. 从机器人接收活动

  8. 结束对话

  9. 连接状态监控和重连

  10. 参考文献


1. 认证

Direct Line API 需要密钥进行身份验证。从 Azure Bot 服务门户获取密钥。


2. 生成Token

使用秘密生成令牌来启动安全通信。

代码示例:

import axios from 'axios';

const generateToken = async (secret) => {
    const url = 'https://directline.botframework.com/v3/directline/tokens/generate';
    try {
        const response = await axios.post(url, {}, {
            headers: {
                Authorization: `Bearer ${secret}`,
            },
        });
        return response.data.token;
    } catch (error) {
        console.error('Error generating token:', error);
        throw error;
    }
};
登录后复制
登录后复制

3. 刷新Token

代币的寿命是有限的。在过期之前刷新它们。

代码示例:

const refreshToken = async (token) => {
    const url = 'https://directline.botframework.com/v3/directline/tokens/refresh';
    try {
        const response = await axios.post(url, {}, {
            headers: {
                Authorization: `Bearer ${token}`,
            },
        });
        return response.data.token;
    } catch (error) {
        console.error('Error refreshing token:', error);
        throw error;
    }
};
登录后复制

4. 开始对话

使用令牌与机器人发起对话。

代码示例:

const startConversation = async (token) => {
    const url = 'https://directline.botframework.com/v3/directline/conversations';
    try {
        const response = await axios.post(url, {}, {
            headers: {
                Authorization: `Bearer ${token}`,
            },
        });
        return response.data;
    } catch (error) {
        console.error('Error starting conversation:', error);
        throw error;
    }
};
登录后复制

5. 重新连接对话

如果连接丢失,您可以使用conversationId和WebSocket重新连接。

代码示例:

const reconnectConversation = async (conversationId, token) => {
    const url = `https://directline.botframework.com/v3/directline/conversations/${conversationId}?watermark=0`;
    try {
        const response = await axios.get(url, {
            headers: {
                Authorization: `Bearer ${token}`,
            },
        });
        return response.data;
    } catch (error) {
        console.error('Error reconnecting conversation:', error);
        throw error;
    }
};
登录后复制

6. 向机器人发送活动

向机器人发送用户消息或活动。

代码示例:

const sendActivity = async (conversationId, token, activity) => {
    const url = `https://directline.botframework.com/v3/directline/conversations/${conversationId}/activities`;
    try {
        const response = await axios.post(url, activity, {
            headers: {
                Authorization: `Bearer ${token}`,
            },
        });
        return response.data;
    } catch (error) {
        console.error('Error sending activity:', error);
        throw error;
    }
};
登录后复制

7. 从机器人接收活动

使用 WebSocket 实时监听机器人响应。

代码示例:

const connectWebSocket = (streamUrl, onMessage) => {
    const socket = new WebSocket(streamUrl);

    socket.onopen = () => {
        console.log('WebSocket connection established.');
    };

    socket.onmessage = (event) => {
        const data = JSON.parse(event.data);
        console.log('Message received:', data);
        onMessage(data.activities);
    };

    socket.onerror = (error) => {
        console.error('WebSocket error:', error);
    };

    socket.onclose = (event) => {
        console.warn('WebSocket connection closed:', event);
    };

    return socket;
};
登录后复制

8. 结束对话

通过停止沟通来明确结束对话。

注意:Direct Line API 不需要显式 API 调用来“结束”对话。


9. 连接状态监控和重连

监控 WebSocket 状态,如果断开连接则回退到轮询。

代码示例:

import axios from 'axios';

const generateToken = async (secret) => {
    const url = 'https://directline.botframework.com/v3/directline/tokens/generate';
    try {
        const response = await axios.post(url, {}, {
            headers: {
                Authorization: `Bearer ${secret}`,
            },
        });
        return response.data.token;
    } catch (error) {
        console.error('Error generating token:', error);
        throw error;
    }
};
登录后复制
登录后复制

10. 参考文献

  • Microsoft Direct Line API 文档
  • WebSocket API
  • Axios 文档
  • React Native 文档

结论

本文档提供了使用 Axios 和 WebSocket 将 Direct Line API 集成到 React Native 应用程序中的完整指南。按照概述的步骤进行身份验证、管理对话并可靠地处理与 Copilot Agent Bot 的通信。

以上是文档:在带有 Axios 的 React Native 应用程序中使用 Direct Line API的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板