在 Direct Line API 3.0 中开始聊天
Direct Line 会话由客户端显式打开,只要机器人和客户端参与并拥有有效凭据,就可以运行。 打开会话时,机器人和客户端可能会发送消息。 多个客户端可以连接到一个给定会话,并且每个客户端都可以代表多个用户参与。
打开新会话
若要从客户端打开新聊天,请向 /v3/directline/conversations 终结点发出 POST。
POST https://directline.botframework.azure.cn/v3/directline/conversations
Authorization: Bearer SECRET_OR_TOKEN
以下代码段提供了“开始聊天”请求和响应的示例。
请求
POST https://directline.botframework.azure.cn/v3/directline/conversations
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn
响应
如果请求成功,响应将包含会话 ID、令牌和指示令牌过期之前的秒数的值以及客户端可能用于通过 WebSocket 流接收活动的流 URL。
HTTP/1.1 201 Created
[other headers]
{
"conversationId": "abc123",
"token": "RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn",
"expires_in": 1800,
"streamUrl": "https://directline.botframework.azure.cn/v3/directline/conversations/abc123/stream?t=RCurR_XV9ZA.cwA..."
}
通常,“开始聊天”请求用于打开一个新聊天,如果新聊天成功启动,则会返回 HTTP 201 状态代码。 但是,如果客户端使用“开始聊天”操作在先前用于“开始聊天”的 Authorization
标头中提交带有 Direct Line 令牌的“开始聊天”请求,则将返回 HTTP 200 状态代码以指示请求可接受但没有创建聊天(因为它已经存在)。
提示
有 60 秒的时间连接到 WebSocket 流 URL。 如果在此期间无法建立连接,可以重新连接到对话,以生成新的流 URL。
开始聊天和生成令牌
“开始聊天”操作 (POST /v3/directline/conversations
) 类似于生成令牌操作 (POST /v3/directline/tokens/generate
),因为这两个操作都返回可用于访问单个聊天的 token
。 但是,“开始聊天”操作也会启动聊天,与机器人联系并创建 WebSocket 流 URL,而“生成令牌”操作则不会执行这些操作。
如果打算立即通过客户端开始聊天,请使用“开始聊天”操作。 如果计划将令牌分发给客户端并希望它们启动聊天,请改用生成令牌操作。