Я для коробочной версии реализовал логику на AMI событиях астериска. Я получаю AMI события, и в зависимости от события, произвожу определенные действия. Например мне нужно направить входящий звонок от клиента с активной сделкой менеджеру, от Asterisk я получаю event === Newchannel, далее по номеру телефона звонящего я делаю запрос в битрикс - telephony.externalcall.searchcrmentities.json, далее ищу сделки с этой сущностью, если есть активная сделка то проверяю начат рабочий день у менеджера или нет, если начат - originate с менеджером, если нет, звонок направляется на группу вызова. Таким образом у меня чистый FreePBX и чистое ядро битрикса. Из битрикса я получаю события либо вебхуками, либо REST.