Я работал над сборкой бота с помощью 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);
}
}
}
}