Если будете использовать Asterisk, то самым простым способом будет следующее (вижу как связист :)):
1. Кладете на веб сервер рядом с Астериском php скрипт, который используя fsockopen будет обращаться к AMI интерфейсу Астериска и исполнять Originate на вашего оператора (или группу операторов)
https://wiki.asterisk.org/wiki/display/AST/Manager...
2. При "нажатии" кнопки звонка с сайта, ваше приложение будет вызывать скрипт на Астериске (п.1) и передавать в него нужные аргументы (Variable), например, id товара на сайте и номер телефона клиента.
3. В настройках очереди в Астериске используете опцию gosub и описываете в ней, что нужно вызывать (какую ссылку "дернуть", REST запрос, например) в момент соединения оператора очереди и вашего клиента. Передаете в этом запросе ранее полученный id товара.
Таким образом,
- клиент жмет ссылку "получить консультацию по телефону"
- АТС вызывает клиента, по номеру телефона из его личного кабинета, или можно запросить номер в момент нажатия ссылки "консультация"
- клиент берет трубку и АТС начинает вызывать очередь с операторами магазина
- свободный оператор берет трубку и приложение Queue инициирует в сторону вашей CRM системы запрос с информацией об номере оператора КЦ (кто взял трубку в очереди), номер телефона клиента и id товара, который мы передали в АТС в самом начале
- ваша CRM находит в системе активного оператора по его номеру, находит (если есть) клиента по его номеру и подтягивает id товара из вашей базы -открывает оператору карточку вызова
- все счастливы.
Конечно же, вы можете со стороны вашего магазина так же фиксировать, кто и что нажал и потом связывать это с тем, что придет от АТС, все зависит от вашей фантазии как разработчика и от требований вашего заказчика.