nikserg / bitrix24-rest-client
Bitrix24 REST API客户端包,增加了验证和其他功能
Requires
- ext-json: *
- guzzlehttp/guzzle: *
- psr/log: *
Requires (Dev)
- monolog/monolog: ^2.0
Suggests
- ext-memcached: You know it
- monolog/monolog: Allows more advanced logging of the application flow
README
决策
对于本项目,决定放弃服务器端API批处理功能。
支持的功能
所有功能都通过bitrix\rest\client\Bitrix24接口支持。现有实现包括web hook客户端和oauth自授权客户端,以及一些实用装饰器。
这些是通用包装器,因此您仍然需要了解所有方法和它们的参数,这些参数来自原始文档。
然后是bitrix\endpoint\*类,这些类包装客户端以提供额外的便利。
支持的端点
- CRM线索CRUD
- CRM状态系统CRUD
- 常用联系人搜索
- 历史用户CRUD
- 历史部门CRUD
用法
$bitrixClient = new \bitrix\rest\client\OauthAutoLogin(
$config['bitrix']['uri'],
new \bitrix\rest\OauthFullCredentials(
$config['bitrix']['id'],
$config['bitrix']['secret'],
$config['bitrix']['user'],
$config['bitrix']['pass']
),
new \bitrix\storage\File(__DIR__.'/bitrix.json'),
new \Psr\Log\NullLogger()
);
$this->bitrixClient->call('app.info');
已知问题
- 记录的方法crm.*.details.*无法通过web hooks或具有完整权限的rest应用访问。
- 在某些情况下,API将数组值意外地转换为TRUE。
- 某些字段类型,如多选整数字段,在没有选择时可能等于
false
,但此库不允许您提供布尔值。这些值也无法通过仅提供空数组、false、null或它们的任何组合来取消设置。 - 有时列表响应不符合以下描述,此库旨在纠正这一点,但可能并非所有情况都得到涵盖
- 即使未指定,具有正则表达式规则的字段隐式地被认为是“必需的”
- USERFIELD正则表达式规则不会检查有效性,无效的正则表达式始终通过
提示
- “Id未定义”错误通常是请求格式错误的信号。
- 要删除特定的多字段值对象,请传递id和空字符串或null作为其值。
文档片段
更新方法
多字段(crm_multifield)
如果多字段值中未指定ID,将创建新值。如果指定了不存在的ID,则值将被忽略。
通用列表方法
可用的列表参数'fieldName'取决于特定实体。可能有一些未记录的衍生字段可用于过滤,如HAS_*FIELD*
。通用列表始终按每页50个项目分页。
- 根据文档,某些列表可能只接受部分列表参数。
- 列表参数中的字段可能被任意忽略。
- 某些列表方法可能需要所需的过滤器字段。
列表方法参数
这些参数包含在GenericListFilter类中
'ORDER' => [ ... [ fieldName => 'ASC' | 'DESC' ] ]
相当直接。
'SELECT' => [ ... fieldName ]
定义要包含在列表结果中的内容。'ID'或任何其他标识符始终被选中。
一些特殊选项
'*'
- 所有正常非多选字段'UF_*'
- 所有用户字段
'start' => int
在之前列表响应中给出的偏移量,从该处继续。必须是50的倍数。
某些端点还提供“导航”参数,这似乎做的是同样的事情??
'FILTER' => [ ... [ filterType.fieldName => filterValue ] ]
'filterType'的可能值
'='
- 等于(似乎是默认值)
'!'
- 不等于
'<'
'>'
'<='
'>='
- 比较操作,适用于字符串
'%'
- 将值变为通配符,例如 '%value%'
在 'filterValue' 中使用数组来模拟 'IN' 条件。
某些列表似乎支持在 'fieldValue' 中使用 '%',从而启用自定义通配符,这应由特定实体或其列表方法明确声明。
列表响应
通常包含字段
'result'
- 实际过滤结果集,分页列表通常最多50个结果
'total'
- 可能的过滤结果总数
'next'
- 分页列表的可选字段,用于 'START' 过滤参数