Как сделать так, чтобы приложение отправляло сообщение в Microsoft Teams через Graph API? - PullRequest
0 голосов
/ 19 марта 2020

Я хочу иметь возможность использовать API-интерфейс Graph для получения списка каналов и команд, а затем отправить приложение на соответствующий канал без необходимости взаимодействия пользователя с командами MS. Оглядываясь вокруг, я вижу много сообщений о том, что это пока невозможно, но Monday.com и Smartsheet , похоже, делают это. Monday.com даже указывает, что он использует бета-API, а , ни не используют коннекторы.

Я попытался использовать API POST /teams/{id}/channels/{id}/messages после аутентификации, используя способ , показанный в этой документации.

Первый вызов для adminconsent

https://login.microsoftonline.com/organizations/v2.0/adminconsent?&client_id={botID}&response_type=code&redirect_uri=https://myoauthCallback&scope=offline_access User.ReadWrite.All Group.ReadWrite.All

После того, как это вернулось, я немедленно звоню, чтобы получить токен доступа, указанный выше вызов не кажется, что возвращает все, что мне нужно поместить в этот запрос.

POST => /organizations/oauth2/v2.0/token

body = client_id={botId}&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret={secret}&grant_type=client_credentials

Я установил разрешения в https://portal.azure.com/#blade/ для бота, чтобы иметь та же область, что и в первом запросе выше. Здесь ему не нравится объем, переданный таким же образом, поэтому я устанавливаю его на default

, затем я беру access_token, который возвращается, и пытаюсь вызвать POST сообщение на канал .

URL: /teams/{TEAM_ID}/channels/{CHANNEL_ID}/messages

body: { subject: 'test subj', body: { contentType: 'text', content: 'Test message from app' }, }

Это приводит к ошибке

statusCode: 401, code: 'UnknownError', message: ''

Итак Как получить те же функции этих других приложений, чтобы я мог отправлять сообщения непосредственно командам без настройки соединителя?

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Оказывается, что это был коннектор Office 365 против обычного "соединителя", который требует настройки внутри групп.

https://www.youtube.com/watch?v=EqodWkS5PYM

Редактировать: Не обращать внимания, даже с коннекторами Office 365 требуется, чтобы пользователь все равно каким-то образом взаимодействовал с командами MS.

Другое редактирование: Оказывается, он использует Проактивную передачу сообщений https://docs.microsoft.com/en-us/microsoftteams/platform/resources/bot-v3/bot-conversations/bots-conv-proactive#net -example-from-this-sample

Хотя технически вы не можете на самом деле отправить сообщение в приложение, если пользователь сначала не взаимодействует с ботом, при установке приложения запускается dialogUpdate, к которому вы обращаетесь. могу ответить. Итак, в конце концов, я могу установить приложение «Команды» и отправить уведомление боту обо всем, что есть в моем веб-приложении, без необходимости прикасаться к командам Microsoft.

0 голосов
/ 19 марта 2020

Если вы посмотрите на страницу "auth" , на которую вы ссылались , речь идет о создании разрешений для приложений. Тем не менее, см. «создать chatMessage в канале» документацию графика и в разделе «разрешения» вверху показано, что он поддерживает только «делегированные» разрешения, поэтому вы не можете использовать эту конкретную конечную точку с разрешениями приложения. к сожалению.

Соединители (Webhooks) смогут делать то, что вам нужно, но вы говорите, что хотите этого избежать - возможно, вы сможете объяснить, почему это не идеально? Боюсь, я не знаю, как создать веб-крючок программно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...