我正在实现一个DirectLine客户端,用于通过Twilio和BotFramework连接WhatsApp。我已经能够:
在我的生命中,我无法弄清楚如何将活动发送到DirectLine客户端,因此它可以将其转发给用户。换句话说,如何在DL客户端的网络套接字上弹出一些活动?
在机器人方面,我正在做的是:
serviceUrl
,将来自机器人的活动发布给用户我已经尝试了很多不同的身份验证令牌来做到这一点,我最近得到的是使用对话的DirectLine令牌作为承载身份验证:
POST https://directline.botframework.com/v3/directline/conversations/CONVERSATION_ID/activities
{
"type": "message",
"text": "message",
"from": { "id": "whatsapp:BOT_PHONE_NUMBER" },
"recipient": { "id": "whatsapp:USER_PHONE_NUMBER" }
}
这会导致此活动在网络套接字中弹出:
{
"channelId": "directline",
"conversation": {"id": "CONVERSATION_ID"},
"from": {"id": "whatsapp:BOT_PHONE_NUMBER"},
"id": "CONVERSATION_ID|0000006",
"recipient": {
"id": "BOT_ID@something",
"name": "Bot"
},
"serviceUrl": "https://directline.botframework.com/",
"text": "pls",
"timestamp": "2019-08-26T23:14:13.3099739Z",
"type": "message"
}
哪个明显没用是因为用户的电话号码丢失了?取而代之的是,“收件人”被覆盖到了僵尸程序中。
我的问题是:实现这一目标的规范方法到底是什么?
我可以完全绕开BF,打电话给我的客户,然后让它向用户发送消息。但是,这意味着此通道的实现不同于所有其他实现。如果这是要走的路,那么websocket的意义何在?