如何从一个Webhook获得多个结果

时间:2019-06-22 01:24:11

标签: rest crm webhooks bitrix

我正在为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的新手,所以经验不足。谁能给我一些见识?

2 个答案:

答案 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)
  })