Ошибка OAuth для скайп бота, которой раньше не было

Раньше у меня был бот Skype, который мог отправлять сообщения с помощью API.

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

requests.exceptions.HTTPError: 401 Client Error: The provided 'OAuth' ticket failed authentication. for url: https://apis.skype.com/v2/conversations/[conversation]/activities/

Я использую процесс, чтобы получить токен доступа с публикацией на https://login.microsoftonline.com/common/oauth2/v2.0/token, а затем использовать этот токен для публикации сообщения на https://apis.skype.com/v2/conversations/[conversation]/activity/

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


person twasbrillig    schedule 20.11.2017    source источник
comment
Вы жестко запрограммировали apis.skype.com в свой бот? Вы должны использовать входящие сообщения serviceUrl для создания ответа. Сообщения Skype будут иметь serviceUrl smba.trafficmanager.net/apis.   -  person Eric Dahlvang    schedule 21.11.2017
comment
Спасибо за ваш ответ. Я жестко вставляю "Host":"apis.skype.com" в заголовок, а также использую жестко заданный URL. Я не знаю, как получить serviceUrl входящих сообщений, как это сделать? Все, что я могу получить прямо сейчас, - это жетон.   -  person twasbrillig    schedule 21.11.2017
comment
входящее сообщение имеет serviceUrl, который следует использовать для ответа: docs.microsoft.com/en-us/bot-framework/rest-api/   -  person Eric Dahlvang    schedule 21.11.2017
comment
Хм. Бот не настроен на получение сообщений от пользователей; он только сам отправляет сообщения.   -  person twasbrillig    schedule 21.11.2017
comment
Вы пробовали smba.trafficmanager.net/apis в качестве базового URL-адреса и / v3 / беседы / { chatid} / activity / {activityid}? В вашем коде, опубликованном выше, используется apis.skype.com в качестве базового URL-адреса и / v2 / беседы / {talkid}. /виды деятельности   -  person Eric Dahlvang    schedule 21.11.2017
comment
Я получаю HTTPError: 401 Client Error: Unauthorized for url: https://smba.trafficmanager.net/apis/v3/conversations/[conversationid]/activities/ ... но, может быть, это потому, что у меня нет идентификатора активности, который нужно передать?   -  person twasbrillig    schedule 21.11.2017
comment
Мой скайп-бот использовал только сообщения ОТПРАВИТЬ и возвращал 401 последние несколько дней. Изменение URL-адреса отправки на smba.trafficmanager.net/apis/v3/conversations / {} / activity не дали никакого результата Я получил токен аутентификации успешно, но он по-прежнему не работает ('{"message":"Authorization has been denied for this request."}', 401)   -  person E.Big    schedule 21.11.2017
comment
Может быть, есть еще какая-нибудь новая конечная точка авторизации? Потому что в Документах так много нового об API v3, но раздел Auth по-прежнему указывает на login.microsoftonline.com/botframework.com/oauth2/v2.0/token   -  person E.Big    schedule 21.11.2017
comment
@twasbrillig activityId нужно только отправить ответ. В нашем случае, когда бот работает как диспетчер уведомлений, мы продолжаем использовать v3 / беседы / {} / activity, только с новым baseurl, я думаю. Но это все еще не работает   -  person E.Big    schedule 21.11.2017


Ответы (1)


Я столкнулся с той же проблемой, и это сработало для меня:

Я оставил все конечные точки отправки сообщений, как и для v2, НО в полезной нагрузке POST для генерации токенов я изменил 'scope' -> 'https://api.botframework.com/.default'

person E.Big    schedule 21.11.2017
comment
Это сработало! Большое спасибо!! (Раньше было как https://graph.microsoft.com/.default.) - person twasbrillig; 21.11.2017