在Botframework中向Directline API响应添加变量

时间:2019-10-02 23:47:52

标签: node.js botframework direct-line-botframework

我已经成功地请求了 Botframework Directline API ,并且得到了json response 的示例:

{
  "type": "message",
  "id": "XXXXXXXXXXXXXXXX|0000022",
  "timestamp": "2019-10-02T21:09:25.001296Z",
  "channelId": "directline",
  "from": {
    "id": "LuchoBotV1",
    "name": "LuchoBotV1"
  },
  "conversation": {
    "id": "XXXXXXXXXXXXXXXXX"
  },
  "text": "Hay algo mas en que pueda ayudarte?",
  "speak": "Hay algo mas en que pueda ayudarte?",
  "inputHint": "expectingInput",
  "replyToId": "XXXXXXXXXXXXXXXX|0000020"
}

现在,我在一个瀑布对话框中工作,该对话框向用户询问一些个人信息(许可证,地址,销售),我想将此数据添加到响应中并获得json响应,例如这个:

{
  "type": "message",
  "id": "XXXXXXXXXXXXXXXX|0000022",
  ...
  "context": {address: "Street 123", sales: "5000"}
}

我想知道是否可以将此信息纳入API响应。我一直在搜索文档,但是除了如何发送文字外,我什么都没找到。

await stepContext.context.sendActivity(messageText, null, InputHints.IgnoringInput);

2 个答案:

答案 0 :(得分:0)

您是否尝试过发送一个存储用户信息的变量?

说你有

var name = 'Anna';

您将其发送而不是发送文本:

await stepContext.context.sendActivity(name);

预期输出为:

{
  "type": "message",
  "id": "XXXXXXXXXXXXXXXX|XXXXXX",
  ...
  "text": "Anna"
}

答案 1 :(得分:0)

您可以将上下文添加到活动的渠道数据中。

BotFramework SDK v4(节点)

await stepContext.context.sendActivity({
   text: 'Hello, World!',
   channelData: {
     context: {address: 'Street 123', sales: '5000'}
   }
});

预期结果

{
  "type": "message",
  "id": "XXXXXXXXXXXXXXXX|XXXXXX",
  ...
  "text": "Hello, World!",
  "channelData": {
    "context": {"address": "Street 123", "sales": "5000"}
  }
}

希望这会有所帮助!

相关问题