你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将机器人连接到电子邮件

适用于:SDK v4

可将机器人配置为通过 Microsoft 365 电子邮件与用户进行通信。 配置机器人访问电子邮件帐户后,如果有新邮件到达,会收到一条消息。 然后,机器人可以使用电子邮件进行响应。 例如,在响应用户的电子邮件消息时,机器人可以通过消息“你好”发送电子邮件回复。 感谢你下达的订单! 我们将立即开始处理。”

电子邮件通道当前仅使用 Office 365。 目前不支持其他电子邮件服务。

警告

  • 出于安全原因,Exchange Online 将于 2022 年 10 月 1 日禁用基本身份验证功能。 电子邮件通道现支持新的 Exchange Online 新式身份验证模型。 使用基本身份验证模型的机器人将于 2022 年 10 月更改后出现故障;如果租户管理员在此日期之前禁用基本身份验证,则会更早出现故障。 如欲了解详细信息,请参阅基本身份验证与 Exchange Online - 2021 年 9 月更新版
  • 创建“spambots”(包括发送不需要或未经请求的批量电子邮件的机器人)将被视为违反 Bot Framework 行为准则

先决条件

  • 如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
  • 机器人的专用 Office 365 电子邮件帐户。
  • 授予机器人 Mail.ReadWriteMail.Send 访问权限的权限。 如欲了解详细信息,请参阅了解 Microsoft Entra ID 应用程序同意体验

注意

不应该将自己的个人电子邮件帐户用于机器人,因为发送到该电子邮件帐户的每个邮件都将转发给机器人。 这可能导致机器人不恰当地向发件人发送响应。 因此,机器人应仅使用专用的 M365 电子邮件帐户。

配置电子邮件以使用新式身份验证

  1. 打开 Azure 门户

  2. 打开机器人的 Azure 机器人资源边栏选项卡。

  3. 在左侧窗格中选择通道

  4. 选择电子邮件打开配置电子邮件边栏选项卡。

    Configure email settings

    1. 身份验证类型设置为新式身份验证 (OAUTH)

    2. 电子邮件地址中,输入机器人的专用 Office 365 电子邮件帐户。

    3. 选择“授权”。

      1. 出现提示时,登录到电子邮件帐户,授予读写权限,并向机器人发送权限。

      2. 成功后,会打开一个含有验证代码的页面。 拷贝验证代码。

        Interaction with validation code

    4. 身份验证代码中,输入刚刚拷贝的验证代码。

    5. 选择应用完成电子邮件配置。

配置电子邮件使用基本身份验证

注意

  • 不支持使用任何替换 Microsoft Entra ID 的供应商的联合身份验证。
  • 出于安全原因,将于 2022 年 10 月 1 日禁用 Exchange Online 的基本身份验证功能。 应在最后期限前迁移所有机器人以使用新式身份验证
  • 如果使用 Microsoft Exchange Server,请确保先启用自动发现,然后再配置电子邮件以使用基本身份验证。
  • 如果使用的是启用了 MFA 的 Office 365 帐户,请确保先为指定帐户禁用 MFA,然后再为电子邮件通道配置帐户。 否则,连接将失败。
  1. 打开 Azure 门户

  2. 打开机器人的 Azure 机器人资源边栏选项卡。

  3. 在左侧窗格中,选择通道(预览版)打开通道边栏选项卡。

  4. 选择电子邮件打开配置电子邮件边栏选项卡。

    Enter email credentials

    1. 身份验证类型设置为基本身份验证(2022 年 10 月起禁用)
    2. 电子邮件地址中,输入机器人的专用 Office 365 电子邮件帐户。
    3. 密码中,输入电子邮件帐户的密码。
    4. 选择应用完成电子邮件配置。

自定义电子邮件

电子邮件通道支持发送自定义值以使用活动 channelData 属性创建更高级的自定义电子邮件。 以下片段显示了从机器人到用户的传入自定义电子邮件的 channelData 的示例。

{
    "type": "ActivityTypes.Message",
    "locale": "en-Us",
    "channelID": "email",
    "fromName": { "id": "mybot@mydomain.com", "name": "My bot"},
    "recipientName": { "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>",
        "importance": "high",
        "ccRecipients": "Yasemin@adatum.com;Temel@adventure-works.com",
    }
}

有关活动 channelData 属性的详细信息,请参阅创建自定义电子邮件

疑难解答

有关处理对应用程序的同意时可能发生的错误,请参阅了解 Microsoft Entra ID 应用程序同意体验执行对应用程序的同意时意外出现的错误

如果机器人没有在 15 秒内返回 HTTP 状态代码“200 正常”作为对传入电子邮件的响应,则电子邮件通道会尝试重新发送该邮件,因此机器人可能会多次收到同一电子邮件活动。 如欲了解详细信息,请参阅机器人工作原理如何排查超时错误一文中的 HTTP 详细信息部分。

其他资源