猿问

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

我正在寻找一些帮助格式化 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”端点。


慕沐林林
浏览 299回答 2
2回答

慕仙森

我在文档的已知限制中找到了答案。某些资源类型,包括消息,必须分两个阶段完成,一个初始发布,然后一个后续补丁。创建消息然后使用此 JSON 进行修补会返回有效响应。{    "extc5bnq6uk_TestExtension": {        "ValueOne": "Test Value One",        "ValueTwo": "Test Value Two"    }}不幸的是,消息模式扩展的另一个限制是它们不能用于过滤消息,这正是我最终所追求的。Outlook 实体类型(联系人、事件、消息或帖子)不支持对架构扩展属性进行过滤(使用 $filter 表达式)。

慕斯709654

根据您发布的问题,您已成功创建了 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} 将收到电子邮件。
随时随地看视频慕课网APP
我要回答