首页 文章

由于在bot中调用builder.Prompts.text()而导致客户端websocket接收到的事件缺少活动负载

提问于
浏览
2

botframework Node.js [DirectLine 3.0 API / React Native Client(Android)]由于在bot中调用builder.Prompts.text()而客户端websocket接收到的事件缺少'data'属性(即活动负载) .

Version Information

React Native Client(Android)

  • Node.js v7.5.0

  • react-native v0.41.2

博特

  • Node.js v6.3.1

  • botbuilder v3.7.0

直达专线

  • API v3.0

Description of Issue

由于在机器人中调用builder.Prompts.text()而客户端websocket接收的事件缺少'data'属性(即活动有效负载) .

注意:此后续事件将包括符号'original_event',其中包含初始事件中预期的缺失事件详细信息 .

来自bot的Direct Line请求(即从ChatConnector.authenticatedRequest()捕获):

{
  json: true,
  method: “POST”,
  url: “https://state.botframework.com/v3/botstate/directline/conversations/[MY CONVERSATION ID]”,
  body: {
    from: {
      id: “MyBot@ZSXyfFggVqW”,
      name: “MyBot”
    },
    recipient: {
      id: “MyClientId”
   },
    text: “Hi Pete, please enter the code displayed in the browser page to complete the sign in process.”,
    type: “message” 
  }         
}

websocket收到的事件:

{
  … // Expecting a data property at this level. Don’t confuse this with the data property in the Symbol below, which is for the previous event.
  Symbol(original_event): {
    data: "{
      "activities": [
        {
          "type": "typing",
          "id": "[MY CONVERSATION ID]|5ChLjtMKBEz",
          "timestamp": "2017-05-04T10:37:48.3923201Z",
          "channelId": "directline",
          "from": {
          "id": "MyBot",
          "name": "MyBot"
        },
        "conversation": {
          "id": "[MY CONVERSATION ID]"
        }
      }
    ]}",
    type: ”message”
  },
  timestamp: 1493894269211,
  type: “message”
}

上述内容之后的事件包含:

{
  …
  Symbol(original_event): {
    data: "{
    "activities": [
      {
        "type": "message",
        "id": "[MY CONVERSATION ID]|0000030",
        "timestamp": "2017-05-04T10:37:49.092354Z",
        "channelId": "directline",
        "from": {
          "id": "MyBot",
          "name": "MyBot"
        },
        "conversation": {
          "id": "[MY CONVERSATION ID]"
        },
        "text": "Hi Pete, please enter the code displayed in the browser page to complete the sign in process.”
      }
    ],
    "watermark": "30"
    }",
    type: ”message”
  },
  timestamp: 1493894511787,
  type: “message”
}

笔记:

•请注意,原始文件后面的事件具有我们期望的数据属性,包含在符号“original_event”中 .

•如果尝试对任何其他 Channels 类型使用相同的会话话题,则会在聊天窗口中显示消息“Hi Pete,请输入浏览器页面中显示的代码以完成登录过程”(即Skype,Slack,Web Chat)等等) . 只有直线才会出现问题 .

•有问题的消息是在用户通过身份验证并调用重定向URL后触发的主动消息 . 该消息需要提示用户进行第二种形式的认证,在这种特殊情况下是访问代码 .

•如果上述对话请求了所有历史消息活动,则缺失的消息属于所述活动,即:

[https://directline.botframework.com/v3/directline/conversations/MY对话ID] /活动?watermark = [INITIAL WATERMARK]

{
      "activities": [
            …
    {
      "type": "message",
      "id": "[MY CONVERSATION ID]|0000009",
      "timestamp": "2017-05-04T17:48:33.0747342Z",
      "channelId": "directline",
      "from": {
        "id": "MyBot"
      },
      "conversation": {
        "id": "[MY CONVERSATION ID]"
      },
      "text": "Hi Pete, please enter the code displayed in the browser page to complete the sign in process."
    }
…

有什么建议?

Update 05/05/2017

目前正在寻求两种思路,或者与React Native捆绑的WebSocket库存在问题,或者我们有一个直接的Line Line WebSocket问题(我的一位同事将在今天早上用本地IOS客户端重新测试以确认单向或另一个) .

1 回答

  • 0

    不再是问题 . Websocket事件现在看起来正如预期的那样 .

相关问题