无法从 Azure 函数调用 Dynamics 365 Events API

问题描述 投票:0回答:1

我正在尝试使用node.js从Azure函数调用事件API

我已经通过以下方式创建了网络应用程序

https://learn.microsoft.com/en-us/dynamics365/marketing/developer/register-web-application-events-api

我获得了 api 端点和令牌。


在创建 Web 应用程序时,我还注册了我的 Azure 函数 url 作为源。

例如,如果我的函数应用程序网址是

FnApp 网址

https://msazfunctionapp.azurewebsites.net/api/msazfunctionname?code=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=

在我注册的原产地字段中

https://msazfunctionapp.azurewebsites.net/


创建 Web 应用程序后,我按照以下链接在 Azure 函数中使用事件 API

https://learn.microsoft.com/en-us/dynamics365/marketing/developer/using-events-api

但是当我使用“代码+测试”选项卡从天蓝色门户运行该函数时,我在响应中看到以下错误

回复状态:400

2023-06-04T06:40:50Z [信息] 事件 Api 中的错误:SyntaxError:JSON 输入意外结束

这是Node.JS函数App中的JS代码

const https = require('https');

module.exports = async function (context, req) {

    try {

        context.log('JavaScript HTTP trigger function for D365 Events API processed a request.');
       

        try {

        const requestOptions = {

        method : 'GET',

        headers : { 'Content-Type': 'application/json' }

        };


        const fetchUrl = 'https://xxxxxxxxxxxxxxxxxxx.svc.dynamics.com/EvtMgmt/api/v2.0/events/published?emApplicationtoken=xxxxx-xxxxx-xxxxxxxxx’;

        const response = await fetch(fetchUrl);

        context.log('Response status : '  + response.status);

        const respData = await response.json();

        const JSONrespData = JSON.stringify(respData);

        context.log('Response data as string : ' + respData);

        context.log('Response data as Object : ' , respData);

        context.log('Response data JSON Stringified : ' + JSONrespData);

        } catch(err) {

            context.log('Error in Events Api : ' + err);

        }

       // context.res = data;

        const responseJSON = {

            "data" : respData

        }

        context.res.headers = { "Content-Type": "application/json" };

        context.res.headers = { "content-type": "application/json" };

        context.res.body = responseJSON; 

        context.done();        

    } catch(err) {

        context.res = {

            status: 500

        };

    }

}

azure-functions microsoft-dynamics
1个回答
0
投票

我们无法解决这个问题,因此我们找到了另一种获取事件数据的方法。 我们使用了 Web api,并且能够获取事件相关数据 https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/perform-operations-web-api

但是我们必须进行一些配置才能使 Web Api 正常工作 https://learn.microsoft.com/en-us/power-apps/developer/data-platform/oauth-cross-origin-resource-sharing-connect-single-page-application

© www.soinside.com 2019 - 2024. All rights reserved.