Node.js 向Botframework中的Directline API响应添加变量

Node.js 向Botframework中的Directline API响应添加变量,node.js,botframework,direct-line-botframework,Node.js,Botframework,Direct Line Botframework,我已经成功地请求了Botframework Directline API,我得到了这个json响应的示例: { "type": "message", "id": "XXXXXXXXXXXXXXXX|0000022", "timestamp": "2019-10-02T21:09:25.001296Z", "channelId": "directline", "from": { "id": "LuchoBotV1", "name": "LuchoBotV1"

我已经成功地请求了Botframework Directline API,我得到了这个json响应的示例:

{
  "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);

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

假设你有:

var name = 'Anna';
您可以将其发送,而不是发送文本:

await stepContext.context.sendActivity(name);
预期产出将是:

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

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

BotFramework SDK v4(节点)

预期结果

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

希望这有帮助

这个方法有两个问题。首先,很难区分常规bot文本答案和上下文变量。其次,响应必须是对象,而不是字符串我尝试了您的解决方案:
return wait stepContext.context.sendActivity({text:msg,context:result})
但是json响应是相同的。也许代码的某些部分正在过滤与“文本”不同的属性?对不起,我最初的回答中有一个错误。您需要将上下文放入活动的通道数据中。我已经更新了我的答案以反映变化。
{
  "type": "message",
  "id": "XXXXXXXXXXXXXXXX|XXXXXX",
  ...
  "text": "Hello, World!",
  "channelData": {
    "context": {"address": "Street 123", "sales": "5000"}
  }
}