#python #botframework #microsoft-teams
#python #botframework #microsoft-teams
Вопрос:
Я использую botbuilder-python для создания бота MS Teams. После примеров я могу отвечать на сообщения. С чем я борюсь, так это с созданием совершенно нового сообщения без существующей активности, переданной от Teams. Я изменил некоторый код из тестов ( https://github.com/Microsoft/botbuilder-python/blob/62b0512a4dd918fa0d3837207012b31213aaedcc/libraries/botframework-connector/tests/test_conversations.py) но я получаю:
botbuilder.schema.error_response_py3.Исключение ErrorResponseException: (BadSyntax) Не удалось проанализировать идентификатор клиента
Что это такое, где я могу это найти (я могу выудить это из запроса, но это не идеально) и как мне это передать? Кто-нибудь может указать мне на какие-либо примеры создания новой беседы на Python?
Комментарии:
1. вы пытаетесь сделать что-то вроде приветственных сообщений?
2. Не уверен, что вы имеете в виду. Я интегрирую клиентское приложение с Teams, ему необходимо отправлять уведомления пользователям в определенное время, чтобы побудить их что-то сделать.
3. Не могли бы вы, пожалуйста, опубликовать этот запрос непосредственно на странице проблем с Python SDK ? У нас был C # amp; Node. JS-код, в котором вы могли бы указать TenantId в параметрах беседы, но у вас нет примера Python для этого.
4. Я бы рекомендовал начать с примера EchoBot на Python и работать оттуда. Это должно дать вам основу для начала разработки вашего бота.
5. Платформа bot требует, чтобы пользователи отправляли сообщения боту, прежде чем бот сможет отправлять сообщения пользователям, чтобы предотвратить спам-ботов. Вы можете отправлять приветственные сообщения пользователю, когда он присоединяется к беседе, но в канале Teams пользователь все равно должен отправить сообщение боту, прежде чем бот сможет отправить приветственное сообщение. Возможно, вы можете просмотреть упреждающие сообщения , но вам потребуется ссылка на беседу, которая обычно исходит из действия.
Ответ №1:
Я понял это, на всякий случай, если кто-то еще пытается сделать то же самое и застревает:
to = ChannelAccount(id=to_user_id)
bot_channel = ChannelAccount(id=bot_id)
activity_reply = Activity(type=ActivityTypes.message, channel_id='msteams',from_property=bot_channel,recipient=to,text=message)
credentials=MicrosoftAppCredentials(app_id, app_password)
JwtTokenValidation.authenticate_request(activity_reply, "Authorization", credentials)
# That's where you pass the tenant id
reply_conversation_params=ConversationParameters(bot=bot_channel, members=[to], activity=activity_reply, channel_data={ 'tenant': { 'id': tenant_id } })
connector = ConnectorClient(credentials, base_url='https://smba.trafficmanager.net/uk/')
# Create conversation
conversation = connector.conversations.create_conversation(reply_conversation_params)
# And send it
connector.conversations.send_to_conversation(conversation.id, activity_reply)
Комментарии:
1. Как вы заранее определяете, какими должны быть идентификаторы бота и пользователя? У обоих также есть префиксы из того, что я вижу (например, 28: 29:)
2. Я попробовал приведенный выше код, используя значения, найденные в turn_context.activity, и получил botbuilder.schema._models_py3.Исключение ErrorResponseException: (неверный аргумент) Пользователь из другого региона. Если эти значения взяты из teams и не работают, где мне найти правильные?
3. У меня сбой с «Недопустимым идентификатором пользователя в предоставленном клиенте». Не уверен насчет «to_user_id», откуда он берется. Есть идеи?