Согласно one и two , я считаю возможным отправлять проактивное сообщение пользователям.Но, кажется, это не работает, когда пользователи не в сети.Возможно ли это?
Я использую C # и каркас бота V3.
У меня есть 2 вопроса:
Можно ли отправить сообщениепользователям, даже если пользователи не в сети
Если я использую приведенный ниже код из двух, можно ли запустить диалог?Если да, то как?
мой код как показано ниже
public class CustomWebAPIController : ApiController
{
[HttpPost]
[Route("api/CustomWebAPI")]
public async Task<HttpResponseMessage> SendMessage([FromBody]string userobj)
{
try
{
//Initiate a Conversation
string trustServiceUri = "https://api.skypeforbusiness.com/platformservice/botframework";
MicrosoftAppCredentials.TrustServiceUrl(trustServiceUri);
ConnectorClient connector = new ConnectorClient(new Uri(trustServiceUri));
List<ChannelAccount> participants = new List<ChannelAccount>();
participants.Add(new ChannelAccount("sip:XXXXX@XXXXX.onmicrosoft.com", "Agent"));
ConversationParameters parameters = new ConversationParameters(true, new ChannelAccount("sip:XXXXXbot@XXXXX.onmicrosoft.com", "Bot"), participants, "TestTopic");
ConversationResourceResponse response = connector.Conversations.CreateConversationAsync(parameters).Result;
//Initiate another connector with the ServiceURL from above response.
ConnectorClient connectorSend = new ConnectorClient(new Uri(response.ServiceUrl));
IMessageActivity msg = Activity.CreateMessageActivity();
msg.Recipient = new ChannelAccount("sip:XXXXX@XXXXX.onmicrosoft.com", "Agent");
msg.Text = "text message";
msg.Locale = "en-Us";
msg.From = new ChannelAccount("sip:XXXXXbot@XXXXX.onmicrosoft.com", "Bot");
msg.Type = ActivityTypes.Message;
msg.Timestamp = DateTime.UtcNow;
msg.ChannelId = "skypeforbusiness";
msg.ServiceUrl = response.ServiceUrl;
msg.Conversation = new ConversationAccount(isGroup: true, id: response.Id, name: null);
//Send the message from Bot to User
//var result = connectorSend.Conversations.SendToConversationAsync(msg.Conversation.Id, (Activity)msg).Result;
await connector.Conversations.SendToConversationAsync((Activity)msg);
var resp = new HttpResponseMessage(HttpStatusCode.OK);
return resp;
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
}
}
}