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 回答
不再是问题 . Websocket事件现在看起来正如预期的那样 .