我正在为CRM软件开发语音应用程序,并试图从多个联系人中获取信息。 我应该使用的REST调用是:
https://xxxxxxxx.bitrix24.de/rest/1/secret_code/crm.contact.get
在documentation中指出,已返回具有指定ID的联系人。例如,https://xxxxxxxx.bitrix24.de/rest/1/secret_code/crm.contact.get?id=2
返回ID为2的联系人的信息。
但是调用是否可以返回多个结果?即我想从ID为2和4的联系人那里获取信息,有没有办法通过单个Webhook URL来做到这一点?
我尝试了https://intranet_address.bitrix24.de/rest/1/secret_code/crm.contact.get?id=2&id=4
,但是它只返回了ID为4的联系人。我是webhook的新手,所以经验不足。谁能给我一些见识?
答案 0 :(得分:0)
使用batch
查询在一个请求中最多调用50种休息方法
对于您的情况(获得两个ID为2和4的联系人):
curl -i -X POST \
-H "Content-Type:application/x-www-form-urlencoded" \
-d "cmd[q1]=crm.contact.get?id=2" \
-d "cmd[q2]=crm.contact.get?id=4" \
'https://xxxxxxxx.bitrix24.de/rest/1/secret_code/batch'
响应将会
{
"result": {
"result": {
"q1": {
"ID": "2",
...
},
"q2": {
"ID": "4",
...
}
},
"result_error": [],
"result_total": [],
"result_next": [],
"result_time": {
"q1": {
"start": 1561537159.3722,
"finish": 1561537159.3804,
"duration": 0.0081892013549805,
"processing": 0.0081391334533691
},
"q2": {
"start": 1561537159.3805,
"finish": 1561537159.3829,
"duration": 0.0023989677429199,
"processing": 0.0023589134216309
}
}
},
"time": {
"start": 1561537159.3421,
"finish": 1561537159.3829,
"duration": 0.040737867355347,
"processing": 0.010679960250854,
"date_start": "2019-06-26T11:19:19+03:00",
"date_finish": "2019-06-26T11:19:19+03:00"
}
}
答案 1 :(得分:0)
您要做的是调用batch
REST方法,该方法在一个请求中最多允许50个命令。
不清楚您使用的是哪种语言。但是,如果碰巧是JavaScript或TypeScript,则可以使用@2bad/bitrix Bitrix24 REST API客户端来简化操作,因为它将自动对命令进行批处理和限速,因此您可以传递任意数量的命令:
import Bitrix, { Method } from '@2bad/bitrix'
const bitrix = Bitrix('https://PORTAL.bitrix24.ua/rest/1/WEBHOOK_TOKEN')
bitrix.batch([
{ method: Method.CRM_CONTACTS_GET, params: { ID: 2 } },
{ method: Method.CRM_CONTACTS_GET, params: { ID: 4 } }
// add here as much as you want
] as const)
.then((payload) => {
const [deal2, deal4] = payload.result.result
console.log('deal2:', deal2)
console.log('deal2:', deal4)
})