Bot Framework и Microsoft команды - как получить все каналы, связанные с командой? - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь получить все каналы, связанные с конкретной командой, чтобы мой бот мог отправлять проактивные сообщения.На основании прочитанного мною чтения мне нужно использовать метод FetchChannelList в пространстве имен Microsoft.Bot.Connector.Teams в классе TeamsOperationsExtensions.

Если я сделаю это:

var connector = new ConnectorClient(new Uri(activity.ServiceUrl)); ConversationList channels = connector.GetTeamsConnectorClient().Teams.FetchChannelList(activity.GetChannelData<TeamsChannelData>().Team.Id);

каналов равно нулю.Если я разбью его только на Connector.GetTeamsConnectorClient (), то это не пустое значение, а Connector.GetTeamsConnectorClient (). Teams.FetchChannelList (activity.GetChannelData (). Team.Id).далее я попытался получить активность. GetChannelData ().Только свойство Арендатор не является нулевым.Все остальные (Channel, Team, EventType и Notification) имеют значение null.

Я использую туннельное реле, которое перенаправляет сообщения, отправленные в публичную конечную точку бота, в частную конечную точку, и использую аутентификацию фильтра арендатора в контроллере сообщений.,Не уверен, что это вызовет какие-либо проблемы?(Когда я смотрю сообщения, поступающие через туннельный ретранслятор, я также вижу там, что только Tenant является единственным свойством channeldata, которое не является нулевым. Вот что я вижу в tunnelrelay: "entities":[{"locale":"en- US","country":"US","platform":"Windows","type":"clientInfo"}],"channelData":{"tenant":{"id":"our_tenant_id"}}}

Кроме того, относительно ожидаемого teamIDв качестве параметра метода FetchChannelList, как узнать, что это такое для данной команды, кроме метода GetChannelData ()? Я пробовал командлет powershell Get-Team (например: Get-Team -User me@abc.com). Он возвращает отдельный идентификатор groupId для каждой команды, частью которой я являюсь, но я предполагаю, что groupId! = TeamId. Это правильно? И где я могу найти teamId, который FetchChannelList ожидает, кроме метода GetChannelData?

Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 14 декабря 2018

Проблема заключалась в том, что сообщение для бота (действия) было прямым сообщением, а не частью разговора на канале.Очевидно, что свойства Channel и Team доступны только в диалоге канала.

Кроме того, что касается идентификатора команды, один из способов вывести его из кода - это нажать «...» рядом с командой инажмите «получить ссылку на команду».Вы увидите что-то вроде: https://teams.microsoft.com/l/team/19%3a813345c7fafe437e8737057505224dc3%40thread.skype/conversations?groupId=Some_GUID&tenantId=Some_GUID

Строка после команды / (19% 3a813345c7fafe437e871111115934th3% 40thread.skype) содержит идентификатор команды, но не совсем.Если вы замените первый% и два символа, следующие сразу за ним, на:, а второй% и два символа, следующие сразу за ним, на @, это ваш идентификатор команды.Итак, из:

19% 3a813345c7fafe437e871111115934th3% 40thread.skype

идентификатор команды:

19: 813345c7fafe437e871111115934th3@thread.skype

...