在 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,而“生成令牌”操作则不会执行这些操作。

如果打算立即通过客户端开始聊天,请使用“开始聊天”操作。 如果计划将令牌分发给客户端并希望它们启动聊天,请改用生成令牌操作。

其他资源