Начните и отправьте сообщение на канал Microsoft Teams, используя Bot Framework SDK v4 для Python - PullRequest
0 голосов
/ 14 января 2020

Я пытался инициализировать и отправить проактивное сообщение одному каналу групп Microsoft с помощью приведенного ниже примера: https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/python/16.proactive-messages Я добавил этот код в пример, чтобы инициировать сообщение:

connectorClient = await ADAPTER.create_connector_client(service_url=SERVICE_URL)
parameters = ConversationParameters(
        is_group=True,
        channel_data=CHANNEL_ID,
        activity=Activity(type=ActivityTypes.message,
        text='Hello World!'),
        bot=ChannelAccount(id=BOT_ID),
        tenant_id=TENANT_ID)
response = await connectorClient.conversations.create_conversation(parameters)
response.send()

Но это не сработало, и я пробовал много разных способов, и ни один из них тоже не работал, всегда ошибка:

Traceback (most recent call last):
File "/home/farid/works/16.proactive-messages/venv/lib/python3.7/site-packages/aiohttp/web_protocol.py", line 418, in start
resp = await task
File "/home/farid/works/16.proactive-messages/venv/lib/python3.7/site-packages/aiohttp/web_app.py", line 458, in _handle
resp = await handler(request)
File "/home/farid/works/16.proactive-messages/app.py", line 103, in notify
raise exception
File "/home/farid/works/16.proactive-messages/app.py", line 100, in notify
await _send_proactive_message()
File "/home/farid/works/16.proactive-messages/app.py", line 152, in _send_proactive_message
response = await connectorClient.conversations.create_conversation(parameters)
File "/home/farid/works/16.proactive-messages/venv/lib/python3.7/site-packages/botframework/connector/aio/operations_async/_conversations_operations_async.py", line 176, in create_conversation
raise models.ErrorResponseException(self._deserialize, response)
botbuilder.schema._models_py3.ErrorResponseException: (BadSyntax) Incorrect conversation creation parameters

Я не знаю Я не знаю, в чем моя проблема!

Ответы [ 3 ]

1 голос
/ 23 января 2020

Хорошо, вчера вечером Microsoft добавила новый python образец, который решил эту проблему: https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/python/58.teams-start-thread-in-channel

0 голосов
/ 16 января 2020

Вот пример кода в C# с использованием SDK 3

        var userId = userOrChannelId.Trim();
        var botId = context.Activity.Recipient.Id;
        var botName = context.Activity.Recipient.Name;

        var channelData = context.Activity.GetChannelData<TeamsChannelData>();
        var connectorClient = new ConnectorClient(new Uri(context.Activity.ServiceUrl));
        var parameters = new ConversationParameters
        {
            Bot = new ChannelAccount(botId, botName),
            Members = !isChannelMessage ? new ChannelAccount[] { new ChannelAccount(userId) } : null,
            ChannelData = new TeamsChannelData
            {
                Tenant = channelData.Tenant,
                Channel = isChannelMessage ? new ChannelInfo(userId) : null,
                Notification = new NotificationInfo() { Alert = true }
            },
            IsGroup = isChannelMessage
        };


            var conversationResource = await connectorClient.Conversations.CreateConversationAsync(parameters);
            var replyMessage = Activity.CreateMessageActivity();
            replyMessage.From = new ChannelAccount(botId, botName);
            replyMessage.Conversation = new ConversationAccount(id: conversationResource.Id.ToString());
            replyMessage.ChannelData = new TeamsChannelData() { Notification = new NotificationInfo(true) };
            replyMessage.Text = messageText;
            if (attachment != null)
                replyMessage.Attachments.Add(attachment);

                var resourceResponse = await connectorClient.Conversations.SendToConversationAsync(conversationResource.Id, (Activity)replyMessage);
0 голосов
/ 14 января 2020

Существует очень хороший шанс, что я совершенно не в своей базе, так как раньше я никогда не пытался читать Python (я парень на C # / node), но это выглядит например, в ваших ConversationParameters вы пропускаете данные «Получателя» (у вас есть «От», то есть вашего бота), который обычно требуется указать для этого.

На выключенном шанс, что это поможет ...

...