为了账号安全,请及时绑定邮箱和手机立即绑定

使用 SchemaExtension 数据通过 Microsoft Graph API 发送消息

使用 SchemaExtension 数据通过 Microsoft Graph API 发送消息

C#
慕沐林林 2021-11-28 17:42:49
我正在寻找一些帮助格式化 Microsoft Graph API 中的架构扩展数据。我已经能够使用此正文通过代码和图形资源管理器成功发送 Office 365 消息:{  "message": {    "subject": "Test Subject",    "body": {      "contentType": "Text",      "content": "Test Body "    },    "toRecipients": [      {        "emailAddress": {          "address": "foo@email.com"        }      }    ]  }}我创建了一个架构扩展并将其提升为“可用”状态。我可以查询扩展以验证它是否可用并获取此响应正文:{    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#schemaExtensions",    "value": [        {            "id": "extc5bnq6uk_TestExtension",            "description": "Test Extension",            "targetTypes": [                "Message"            ],            "status": "Available",            "owner": "mysecretclienttenantgoeshere",            "properties": [                {                    "name": "ValueOne",                    "type": "String"                },                {                    "name": "ValueTwo",                    "type": "String"                }            ]        }    ]}到目前为止,我还无法将扩展数据附加到新消息中。我试过像这样格式化我的请求正文:{  "message": {    "subject": "Test Subject",    "body": {      "contentType": "Text",      "content": "Test Body "    },    "toRecipients": [      {        "emailAddress": {          "address": "foo@email.com"        }      }    ],    "extc5bnq6uk_TestExtension": {      "ValueOne": "TestValue",      "ValueTwo": "TestValue"    }  }}像这样:{  "message": {    "subject": "Test Subject",    "body": {      "contentType": "Text",      "content": "Test Body "    },    "toRecipients": [      {        "emailAddress": {          "address": "foo@email.com"        }      }    ],    "extensions":[    {        "extc5bnq6uk_TestExtension" : {            "ValueOne" : "TestValue"            "ValueTwo" : "TestValue"        }    }    ]  }我在图表资源管理器中发布到这个 URL:https://graph.microsoft.com/v1.0/me/sendMail以及代码中的“messages”和“sendMail”端点。
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

我在文档的已知限制中找到了答案。某些资源类型,包括消息,必须分两个阶段完成,一个初始发布,然后一个后续补丁。


创建消息然后使用此 JSON 进行修补会返回有效响应。


{

    "extc5bnq6uk_TestExtension": {

        "ValueOne": "Test Value One",

        "ValueTwo": "Test Value Two"

    }

}

不幸的是,消息模式扩展的另一个限制是它们不能用于过滤消息,这正是我最终所追求的。


Outlook 实体类型(联系人、事件、消息或帖子)不支持对架构扩展属性进行过滤(使用 $filter 表达式)。


查看完整回答
反对 回复 2021-11-28
?
慕斯709654

TA贡献1840条经验 获得超5个赞

根据您发布的问题,您已成功创建了 schemaExtension。我认为您想发送带有此 schemaExtension 的电子邮件,但是当您发送带有此 schemaExtension 的电子邮件时,我们会在响应中收到 400 代码。


根据我的测试,我认为我们可以使用请求正文作为打击。


1.像这样创建一个schemaExtension:


{

   "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#schemaExtensions/$entity",

   "id":"{extensionId}",

   "description":"sample description",

   "targetTypes":[

       "Message"

    ],

   "status":"Available",

   "owner":"{owner id}",

   "properties":[

      {

          "name":"p1",

          "type":"String"

      },

      {

          "name":"p2",

          "type":"String"

      }

    ]

  }

创建消息

POST https://graph.microsoft.com/v1.0/me/messages


{

   "message":{

      "subject":"Meet for lunch?",

      "body":{

          "contentType":"Text",

          "content":"The new cafeteria is open."

       },

      "toRecipients":[

          {

              "emailAddress":{

                  "address":"{toRecipients email address}"

              }

          }

      ],

      "extensions":[

          {

              "@odata.type":"Microsoft.Graph.OpenTypeExtension",

              "extensionName":"{extensionName}",

              "p1":"Wingtip Toys",

              "p2":"10000"

          }

      ]

  },

  "saveToSentItems":"false"

}

当我们随请求发送此消息时,我们将获得 202 代码。{toRecipients email address} 将收到电子邮件。


查看完整回答
反对 回复 2021-11-28
  • 2 回答
  • 0 关注
  • 298 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信