我一直在使用 V4 botframework SDK 构建机器人,我们已经为各种目的创建了多个对话框。我们的其中一个对话框用于捕获用于在 CRM 环境中创建会议记录的数据。现在,我们希望在会议结束日期过后向使用此对话框的用户发送主动消息。
作为概念证明,我创建了一个控制台应用程序,该应用程序创建主动消息并使用用户之前使用的相同通道将此消息发送给用户。这似乎可行,但由于用户仍在我们的一个对话框中,因此用户无法响应此主动消息。我想发送一条主动消息,为用户启动一个新对话。
目前,这是我的代码:
using System;
using System.Threading.Tasks;
using Microsoft.Bot.Connector;
using Microsoft.Bot.Connector.Authentication;
using Microsoft.Bot.Schema;
namespace TestBotframeworkSdkProActiveMessages
{
class Program
{
static void Main(string[] args)
{
SendProActiveMessgae().Wait();
}
private static async Task SendProActiveMessgae()
{
var uri = new Uri("https://smba.trafficmanager.net/emea/");
var appId = "MYAPPID";
var appSecret = "MYAPPSECRET";
var connector = new ConnectorClient(uri, appId, appSecret);
var convoId = "MYCONVERSATIONID";
var activity = new Activity()
{
Type = ActivityTypes.Message,
From = new ChannelAccount("BOTID", "KaiBot_DEV"),
Recipient = new ChannelAccount("USERID", "User Name"),
Conversation = new ConversationAccount(false, "personal", convoId),
Text = "My bot's message"
};
try
{
MicrosoftAppCredentials.TrustServiceUrl( "https://smba.trafficmanager.net/emea/");
await connector.Conversations.SendToConversationAsync(convoId, activity);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}