使用DirectLine v3,如何向用户发送消息?

时间:2019-08-26 23:33:10

标签: rest botframework direct-line-botframework

我正在实现一个DirectLine客户端,用于通过Twilio和BotFramework连接WhatsApp。我已经能够:

  1. 创建对话
  2. 收听对话的网络套接字
  3. 将活动发送到机器人

在我的生命中,我无法弄清楚如何将活动发送到DirectLine客户端,因此它可以将其转发给用户。换句话说,如何在DL客户端的网络套接字上弹出一些活动?

在机器人方面,我正在做的是:

  1. 请客户端在bot和用户之间在DirectLine中创建对话(我使用电话号码作为收件人/来自ID)
  2. 使用新对话及其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的意义何在?

0 个答案:

没有答案
相关问题