本文档详细介绍了在 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。
身份验证
生成令牌
刷新令牌
开始对话
重新连接对话
向机器人发送活动
从机器人接收活动
结束对话
连接状态监控和重连
参考文献
Direct Line API 需要密钥进行身份验证。从 Azure Bot 服务门户获取密钥。
使用秘密生成令牌来启动安全通信。
代码示例:
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; } };
代币的寿命是有限的。在过期之前刷新它们。
代码示例:
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; } };
使用令牌与机器人发起对话。
代码示例:
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; } };
如果连接丢失,您可以使用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; } };
向机器人发送用户消息或活动。
代码示例:
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; } };
使用 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; };
通过停止沟通来明确结束对话。
注意:Direct Line API 不需要显式 API 调用来“结束”对话。
监控 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; } };
本文档提供了使用 Axios 和 WebSocket 将 Direct Line API 集成到 React Native 应用程序中的完整指南。按照概述的步骤进行身份验证、管理对话并可靠地处理与 Copilot Agent Bot 的通信。
以上是文档:在带有 Axios 的 React Native 应用程序中使用 Direct Line API的详细内容。更多信息请关注PHP中文网其他相关文章!