Есть ли чистый способ заставить ботов отвечать на сообщения электронной почты, используя Azure BotFramework? - PullRequest
1 голос
/ 03 апреля 2020

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

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

Способ, которым работает текущая реализация, заключается в том, что она преобразует входящее сообщение в модель (которая имеет всю необходимую информацию, ToRecipients , Тело [html письма], тело текста [обычный текст письма] и т. Д.). Используя это, заголовок отделяется от основной части, добавляется ответ ботов с созданным вручную заголовком и прикрепляется к концу остальной части письма. Затем код либо заменяет, удаляет текстовые артефакты из ответа html. А затем по линии вызывается SendActivityAsyn c для отправки сообщения.

При таком подходе возникает множество проблем. Некоторые из них включают текстовые артефакты, такие как возврат каретки (\ r \ n), другие как (> ), которые добавляются к ответу автоматически через некоторую функцию форматирования черного ящика и не удаляются. Форматирование Outlook, например, адреса электронной почты, заключенные в <и> во входящее сообщение, но неправильное форматирование для отправки.

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

1 Ответ

0 голосов
/ 29 апреля 2020

Bot Framework имеет канал электронной почты, который можно использовать как любой другой канал. Формат JSON для электронных писем следующий:

{
    "type": "message",
    "locale": "en-Us",
    "channelID": "email",
    "from": { "id": "mybot@mydomain.com", "name": "My bot"},
    "recipient": { "id": "joe@otherdomain.com", "name": "Joe Doe"},
    "conversation": { "id": "123123123123", "topic": "awesome chat" },
    "channelData":
    {
        "htmlBody": "<html><body style = /"font-family: Calibri; font-size: 11pt;/" >This is more than awesome.</body></html>",
        "subject": "Super awesome message subject",
        "importance": "high",
        "ccRecipients": "Yasemin@adatum.com;Temel@adventure-works.com"
    }
}

Это изменяется в channelData, доступ к которому осуществляется через turnContext.Activity.ChannelData

Официальный do c для этого здесь , и пример реализации того, как работать с channelData (хотя это канал Facebook, а не электронная почта): здесь .

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