计时器触发器 Azure 函数,用于在机器人框架上启动主动对话



我想简而言之,我希望将这个SO问题的Nodejs等价物与这个Github机器人框架示例相结合。

我想使用一个 Azure 函数(我想是 TimerTrigger 函数或 QueueTrigger 函数(,它将主动向给定的人/地址子集发送消息,这些人员/地址(自然(已经在特定平台上向机器人发送消息。

我的猜测是,我需要使用TimerTrigger并将其绑定到存储类型的触发器(queueStorage?blogStorage?(,该触发器将维护要发送消息的地址/人员列表,然后通过直接线路向机器人发送消息。虽然我对 Azure 函数完全陌生。

首先,我使用主动模板在 Azure 上创建了一个机器人服务。在模板中,他们使用队列触发器。我猜计时器触发器的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将数据发送到触发器会是什么样子呢?或者我什至应该使用什么触发器?

使用 TimerTrigger Azure 函数时,不会向触发器函数发送任何数据,它将根据设置的计划自动执行("计划"中的 cron 作业设置:"0 0 */1 * * *"(。 在主动机器人模板中:机器人在触发后通过队列消息触发函数;该函数通过直线触发机器人。

因此,例如,如果要向用户(从机器人(发送每日消息,则可以使用主动机器人模板,只需将触发器函数端修改为 TimeTrigger,并尝试在响应中发送一些内容,以便机器人知道这是来自该 TimerTrigger。(如果不再需要在机器人端写入队列,您也可以将其删除(。

最新更新