1

我正在为 CRM 软件开发语音应用程序,并试图从多个联系人那里获取信息。我应该使用的 REST 调用是:

https://xxxxxxxx.bitrix24.de/rest/1/secret_code/crm.contact.get

文档中指出,返回的联系人带有指定的 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 的新手,所以我没有太多经验。谁能给我一些见解?

4

2 回答 2

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"
  }
}
于 2019-06-26T09:32:24.843 回答
0

您要做的是调用batchREST 方法,该方法在单个请求中最多允许 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)
  })
于 2019-09-15T18:24:45.000 回答