我想简而言之,我希望Nodejs等同于this SO question和this Github Bot Framework example。
我想使用Azure功能(我想象一下TimerTrigger功能或者QueueTrigger功能),它会主动向已经(自然)已经向机器人发送消息的人/地址的子集发送消息一个特定的平台。
我的猜测是我需要使用TimerTrigger并将其绑定到存储类型触发器(queueStorage?blogStorage?),该触发器将维护要发送消息的地址/人员列表,然后通过Direct Line向Bot发送消息。虽然我是Azure Functions的新手。
首先,我使用Proactive模板在Azure上创建了一个bot服务。在模板中,他们使用QueueTrigger。我猜测TimerTrigger的 function.json 看起来像这样:
{
"bindings": [
{
"name": "myQueuedAddresses",
"type": "timerTrigger",
"direction": "in",
"queueName": "bot-queue",
"schedule": "0 0 */1 * * *"
},
{
"type": "bot",
"name": "$return",
"direction": "out",
"botId": "botId"
},
{
"type": "http",
"name": "res",
"direction": "out"
}
]
}
要摄取触发器,它可能很简单:
bot.on('trigger', function (addresses) {
addresses.forEach(sendToAddress);
function sendToAddress(item) {
var queuedMessage = item.value;
var reply = new builder.Message()
.address(queuedMessage.address)
.text('This is coming from the trigger: ' + queuedMessage.text);
bot.send(reply);
}
});
但是Javascript将数据发送到触发器会是什么样子?或者我应该使用什么触发器?
答案 0 :(得分:1)
使用TimerTrigger Azure功能时,您不会向触发器功能发送任何数据,它将根据设置的时间表自动执行(“时间表”中的cron作业设置:“0 0 * / 1 * * * “)。 在主动型僵尸模板中:僵尸程序一旦触发就会通过队列消息触发功能;该功能通过Direct Line触发Bot。
因此,如果您想要向用户发送每日消息(例如,从Bot),那么您可以使用主动bot模板,只需将触发器功能侧修改为TimeTrigger,并尝试在响应,所以你的机器人知道这是来自TimerTrigger。 (如果在机器人方面不再需要写入队列,你也可以删除它。)