Zendesk `app.js` 用完整的 URL 调用外部 API?
Zendesk `app.js` to call external API with full URL?
我刚开始创建 Zendesk 应用程序并遵循入门指南 here。
简述
我 无法将外部 API 的 URL 传递给 Zendesk app.js
文件中的 AJAX 调用语法。我的简单 Zendesk 应用代码可以下载 here.
例如
当我们从下面URL传到requests
https://api.hubapi.com/contacts/v1/contact/email/namgivu@gmail.com/profile?hapikey=demo
Zendesk app.js 会打电话给
https://namgivu.zendesk.com/proxy/to/https%3A%2F%2Fapi.hubapi.com%2F contacts%2Fv1%2Fcontact%2Femail%2Fnamgivu%40gmail.com%2Fprofile%3Fhapikey%3Ddemo
即后缀 https://namgivu.zendesk.com/proxy/to/
会自动添加到 URL,使其成为参数而不是完整的 URL 请求。
详情
我可以成功调用 Zendesk API 方法,例如'/api/v2/users/4829450618.json'
。虽然我不能调用外部 API 例如 Hubspot API 例如this full URL call.
peseudo context
如下
让我们以示例 app.js
的上下文为例,我们只是
- 只需通过
'app.activated': 'myStart'
启动代码
- 然后在不同情况下调用 AJAX 请求
this.ajax('myAJAXCall')
1) 内部 Zendesk API,2a) Target Hubspot API 调用,2b) 简化外部 API 调用,以及 2c) 简单测试调用。
我们可以看到,在 #2b 和 #2c 的情况下,Zendesk 自动将 URL 前缀添加到我们的 URL 参数,这不是我们想要的,即我们想发送 AJAX调用我们设置的完全 URL。
所以我的问题是,如何在 Zendesk 应用程序代码中从 app.js
调用外部 API 方法?
(function() {
return {
events: {
'app.activated': 'myStart',
},
myStart: function() {
this.ajax('myAJAXCall').then(
//succeeded handler
function(data) {
this.switchTo('someView', data);
},
//failed handler
function() {
this.switchTo('errorView');
}
);
},
requests: {
myAJAXCall: function() {
return {
url: '/api/v2/users/4829450618.json', //case 1 - internal Zendesk api call
url: 'https://api.hubapi.com/contacts/v1/contact/email/'+email+'/profile?hapikey=' + this.hubspotAPIKey, //case 2a - target Hubspot api call
url: 'http://someDomain.com/abb', //case 2b - simplified `external api` call
url: 'abb', //case 2c - simplified `external api` call
type: 'GET',
dataType: 'json',
};
},
},
};
}());
令人惊讶并感谢 Zendesk 支持团队,一小部分 AJAX 调用时的参数是 cors:false
我刚开始创建 Zendesk 应用程序并遵循入门指南 here。
简述
我 无法将外部 API 的 URL 传递给 Zendesk app.js
文件中的 AJAX 调用语法。我的简单 Zendesk 应用代码可以下载 here.
例如
当我们从下面URL传到requests
https://api.hubapi.com/contacts/v1/contact/email/namgivu@gmail.com/profile?hapikey=demo
Zendesk app.js 会打电话给
https://namgivu.zendesk.com/proxy/to/https%3A%2F%2Fapi.hubapi.com%2F contacts%2Fv1%2Fcontact%2Femail%2Fnamgivu%40gmail.com%2Fprofile%3Fhapikey%3Ddemo
即后缀 https://namgivu.zendesk.com/proxy/to/
会自动添加到 URL,使其成为参数而不是完整的 URL 请求。
详情
我可以成功调用 Zendesk API 方法,例如'/api/v2/users/4829450618.json'
。虽然我不能调用外部 API 例如 Hubspot API 例如this full URL call.
peseudo context
如下
让我们以示例 app.js
的上下文为例,我们只是
- 只需通过
'app.activated': 'myStart'
启动代码
- 然后在不同情况下调用 AJAX 请求
this.ajax('myAJAXCall')
1) 内部 Zendesk API,2a) Target Hubspot API 调用,2b) 简化外部 API 调用,以及 2c) 简单测试调用。
我们可以看到,在 #2b 和 #2c 的情况下,Zendesk 自动将 URL 前缀添加到我们的 URL 参数,这不是我们想要的,即我们想发送 AJAX调用我们设置的完全 URL。
所以我的问题是,如何在 Zendesk 应用程序代码中从 app.js
调用外部 API 方法?
(function() {
return {
events: {
'app.activated': 'myStart',
},
myStart: function() {
this.ajax('myAJAXCall').then(
//succeeded handler
function(data) {
this.switchTo('someView', data);
},
//failed handler
function() {
this.switchTo('errorView');
}
);
},
requests: {
myAJAXCall: function() {
return {
url: '/api/v2/users/4829450618.json', //case 1 - internal Zendesk api call
url: 'https://api.hubapi.com/contacts/v1/contact/email/'+email+'/profile?hapikey=' + this.hubspotAPIKey, //case 2a - target Hubspot api call
url: 'http://someDomain.com/abb', //case 2b - simplified `external api` call
url: 'abb', //case 2c - simplified `external api` call
type: 'GET',
dataType: 'json',
};
},
},
};
}());
令人惊讶并感谢 Zendesk 支持团队,一小部分 AJAX 调用时的参数是 cors:false