Отвечая на разговоры asyn c: График или Бот? - PullRequest
0 голосов
/ 24 января 2020

У меня есть расширение Сообщения команд, которое возвращает ответ Задачи, который представляет собой встроенное веб-представление среднего размера iFrame

  • Это успешно работает; включая добавленную в канал пользовательскую вкладку и другие приятные волшебные c звонки в Microsoft Graph.

Что меня смущает, так это как делать (и это, вероятно, мое непонимание именования вещей )

  1. вставить «что-то» обратно в поток сообщений / постов, который является ссылкой на недавно созданную вкладку ... подобно тому, что вы получаете, когда у вас есть созданная вкладка стиля «configureTabs» - в чате есть дружеское сообщение (сообщение), указывающее на эту новую вкладку.

    • я делаю это с помощью Microsoft Graph или обратно через бота?

    • код, который осуществляет связь, может быть другой службой в другом месте, которая действует асинхронно c ... поэтому ему необходимо взаимодействовать с чем-то где-то в контексте. Смущает, если это бот с некоторыми параметрами или Microsoft Graph с параметрами.

  2. как вставить изображение (а не ссылку на вкладку) в Сообщение / Post stream - но показывающий изображение, а не ссылку на какой-то случайный URL (ie:)

    • не удалось найти примеры, которые делают это; снова будет asyn c, как указано выше; а формат сообщения будет карта или что то нестандартное?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Чтобы закрыть l oop для будущих читателей.

Я использовал следующие документы Microsoft Graph API и публикацию выше, и это работает: Создание chatMessage в канале и Создание пользовательского вызова Microsoft Graph из SDK

Пользовательский вызов графика (так как он не реализован в. NET SDK во время этого ответа) выглядит примерно так:

var convoReq = $"https://graph.microsoft.com/beta/teams/{groupId}/channels/{channelId}/messages";
var body = this.TeamsMessageFactory(newCreatedTabUrl, anotherstring).ToJson();
var postMessage = new HttpRequestMessage(HttpMethod.Post, convoReq)
{
   Content = new StringContent(body, System.Text.Encoding.UTF8, "application/json")
};
await _graphClient.CurrentGraphClient.AuthenticationProvider.AuthenticateRequestAsync(postMessage);
var response = await _graphClient.CurrentGraphClient.HttpProvider.SendAsync(postMessage);

if (response.IsSuccessStatusCode)
{
     var content = await response.Content.ReadAsStringAsync();
     return true;
}

groupId и channelId находятся в других местах; TeamsMessageFactory - это просто образец, который сериализовал граф объектов C# для запроса POST, как подробно описано в Создание chatMessage в канале

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

Итак, для ясности, ответ на задачу НЕ является тем же, что и вкладка, хотя они могут в конечном итоге размещаться в одном и том же бэкэнд-веб-приложении (а также, хотя ваш TAB может фактически вызывать всплывающее окно / ответ iframe для ответа на задачу). используя библиотеку Teams javascript).

Кроме того, чтобы отправить что-то обратно в канал, например, при создании вкладки, есть два способа сделать это:

  1. Во-первых, используйте опцию Graph Api Создать ChatMessage (хотя эта ссылка только для канала - не уверен, применима ли ваша вкладка / задание к групповым и / или 1-1 чатам).
  2. 2-й вариант: бот должен быть частью вашего приложения. Затем, когда вы будете готовы отправить что-то на канал, вы фактически отправите что-то, что называется «проактивный обмен сообщениями». Для этого вам нужно иметь определенные справочные данные, которые вы получите при установке бота в канал («ссылка на разговор», «ServiceUrl» и т. Д.). Я опишу это подробнее в своем ответе на Программно отправка сообщения боту в Microsoft Teams

Что касается отправки изображения, то здесь тоже может работать любое из вышеперечисленного, с точки зрения как отправить изображение. Что касается отправки из изображения, вам необходимо использовать один из видов «карточек» (в основном «более богатые» сообщения, чем просто необработанный текст). Вы можете узнать больше об этом на Представление карт и о типах карт для Команд на Ссылка на карту . Есть несколько, которые можно использовать для отправки изображения, в зависимости от того, что еще вы хотите, чтобы карта делала. Например, адаптивная карта может отправлять изображение, текст и какую-либо кнопку действия.

Надеюсь, это поможет

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