Как инициировать исходящие сообщения от бота в Skype для бизнеса, когда пользователи не в сети - PullRequest
0 голосов
/ 19 февраля 2019

Согласно one и two , я считаю возможным отправлять проактивное сообщение пользователям.Но, кажется, это не работает, когда пользователи не в сети.Возможно ли это?

Я использую C # и каркас бота V3.

У меня есть 2 вопроса:

  1. Можно ли отправить сообщениепользователям, даже если пользователи не в сети

  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);
        }
    }
}

1 Ответ

0 голосов
/ 19 февраля 2019

Первый документ, на который вы ссылаетесь, гласит:

, пока пользователь находится в пользовательской беседе с ботом и все еще имеет открытое окно разговора Skype

В настоящее время это ограничение для ботов Skype для бизнеса (превью).

...