如何使用 Azure Functions 向使用各种渠道的用户发送主动通知/广播消息?

How to send proactive notification/ broadcast message using Azure Functions to user using various channels?

我需要通过 Microsoft Bot V4 向预定在特定时间的用户发送主动通知。我不确定如何进行。

目前,我正在尝试使用 Azure Functions 向用户发送主动消息,但是,我不确定使用什么来连接 bot 服务和 azure functions。我查看了 Direct Line,但我不清楚。

目前我能想到的最好的方法是使用Azure Function和Direct Line来主动通知用户。

我通过邮递员测试了直线API,但没有成功。它说找不到会话 ID。

https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities

JSON POST

{
    "type": "message",
    "from": {
        "id": "user1"
    },
    "text": "hello"
}

消息发送后应该给我ID。

{
    "id": "0001"
}

编辑:

我设法理解了我与 Direct Line 的问题。它不允许我向不同的渠道发送消息,例如网络聊天或 Skype 上的机器人。是否有任何其他选项可以在 Skype 上向我的用户发送消息?

您需要创建输出机器人框架,这是每隔 x 分钟触发的 azure 函数的绑定信息

{
  "bindings": [
    {
      "name": "myTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 */1 * * * *"
    },
    {
      "type": "bot",
      "name": "$return",
      "botId": "Azurefunction",
      "secret": "AppSettingNameOfYourBot",
      "direction": "out"
    }
  ],
  "disabled": false
}

而 azure 函数是

使用系统; 使用 System.Net; 使用 System.Net.Http; 使用 Microsoft.Azure.WebJobs.Host;

public class BotMessage { public 字符串来源{ 得到;放; } public 字符串消息 { 得到;放; } }

public static BotMessage  Run(TimerInfo myTimer ,TraceWriter log)
{
    BotMessage message = new BotMessage()
    {
        Source = "AzureFunction",
        Message = "Testing"
    };
    return message;
}

此外,您的绑定配置设置为使用函数的 return 值(同样,在本例中,它与绑定支持的任何类型都不匹配)这就是您可以如何制作Bot 和 azure 函数之间的连接。

对于直线 api 相关问题,请查看此线程

Cant send message using directlineapi in bot framework

希望对您有所帮助。

好的,我解决了我的问题。通过使用 REST 连接器 https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-authentication?view=azure-bot-service-4.0 我想我只是假设我必须使用 Direct Line

我可能没有解释清楚我的问题到底是什么。感谢您的答复!