VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Скрытие набираемого номера через Click2Call

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
Old_Beard
Сообщения: 1
Зарегистрирован: 30 дек 2024, 20:54

Скрытие набираемого номера через Click2Call

Сообщение Old_Beard »

Я скрываю номер от менеджера который использует Click2call в CRM.
Оператор нажимает на кнопку Click2call, поступает звонок в софтфон от Click2Call, оператор принимает внутренний вызов и дальше ожидает соединения с клиентом.
Так вот номер клиента не должен отображаться для менеджера. (политика компании)
Проблема в том, что например LinPhone скрывают номер подписывая его Click2Call, а вот Zoiper показывает номер игнорируя настройку
same => n,Set(CALLERID(num)=Click2Call).

set-static-callerid - контекст указанный в php скрипте для Click2Call
Самый простой контекст
[set-static-callerid]
exten => _X.,1,NoOp(Обработка вызова для Click2Call)
same => n,Set(CALLERID(name)=Company)
same => n,Set(CALLERID(num)=Click2Call)
same => n,Set(REAL_NUMBER=${EXTEN})
same => n,MixMonitor(/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y/%m/%d)}/out-${EXTEN}-${CALLERID(num)}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}.wav,b)
same => n,Goto(from-internal,${EXTEN},1)

Все софтфоны на MacOS не показывают набираемый номер, но вот Zoiper игнорирует изменения, а это условно утечка номера с базы-клиентов компании.

Возвращаю в контекст from-internal для того чтобы дальше Астериск рулил всей маршрутизацией.

Другой вариант
[set-static-callerid]
exten => _X.,1,NoOp(Обработка вызова для Click2Call)
same => n,Set(CALLERID(name)=Company)
same => n,Set(CALLERID(num)=Click2Call)
; Модификация заголовков To, Contact и Request-URI
same => n,Set(PJSIP_HEADER(update,To)=<sip:Click2Call@мойдомен>)
same => n,Set(PJSIP_HEADER(update,Contact)=<sip:Click2Call@мойдомен>)
same => n,Set(PJSIP_HEADER(update,Request-URI)=<sip:Click2Call@мойдомен>)
same => n,Set(CALLERID(num-pres)=prohib)
same => n,Set(CALLERID(name-pres)=prohib)
same => n,Set(REAL_NUMBER=${EXTEN})
same => n,MixMonitor(/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y/%m/%d)}/out-${REAL_NUMBER}-${CALLERID(num)}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}.wav,b)
same => n,Goto(from-internal,${EXTEN},1)

Уже и делал через тяжёлую наркоманию с использованием AGI скрипта

#!/usr/bin/php
<?php

require('phpagi.php');

$agi = new AGI();

$callerid_name = "Company";
$callerid_num = "Click2Call";

$real_number = $agi->get_variable("REAL_NUMBER")["data"];

// Устанавливаем CallerID
$agi->set_variable("CALLERID(name)", $callerid_name);
$agi->set_variable("CALLERID(num)", $callerid_num);

// Заменяем SIP-заголовки
$agi->set_variable("PJSIP_HEADER(add,To)", "<sip:anonymous@pbx-my.stri****.com>");
$agi->set_variable("PJSIP_HEADER(add,Remote-Party-ID)", "<sip:anonymous@pbx-my.stric****.com>");
$agi->set_variable("PJSIP_HEADER(add,P-Asserted-Identity)", "<sip:anonymous@pbx-my.stri****.com>");
$agi->set_variable("PJSIP_HEADER(add,Contact)", "<sip:anonymous@pbx-my.stri*****.com>");

// Log
$agi->verbose("AGI: Обработка вызова на $real_number");

// Передаём реальный номер для использования в диалплане
$agi->set_variable("DIAL_NUMBER", $real_number);

exit(0);
?>
Контекст под AGi скрипт
[set-static-callerid]
exten => _X.,1,NoOp(Обработка вызова через AGI)
same => n,Set(REAL_NUMBER=${EXTEN})
same => n,AGI(/var/lib/asterisk/agi-bin/click2call-handler.php)
same => n,Set(PJSIP_HEADER(remove,Remote-Party-ID)=)
same => n,Set(PJSIP_HEADER(remove,P-Asserted-Identity)=)
same => n,Set(PJSIP_HEADER(remove,Contact)=)
same => n,Set(PJSIP_HEADER(remove,To)=)
same => n,Set(PJSIP_HEADER(add,From)=<sip:anonymous@yourdomain.com>)
same => n,Set(PJSIP_HEADER(add,P-Asserted-Identity)=<sip:anonymous@yourdomain.com>)
same => n,MixMonitor(/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y/%m/%d)}/out-${REAL_NUMBER}-${CALLERID(num)}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}.wav,b)
same => n,Dial(Local/${DIAL_NUMBER}@from-internal,,t)
same => n,Hangup()

Что я упускаю, подскажите куда еще смотреть чтобы скрыть набираемый номер непосредственно в Zoiper...
ded
Сообщения: 15632
Зарегистрирован: 26 авг 2010, 19:00

Re: Скрытие набираемого номера через Click2Call

Сообщение ded »

Переменная CALLERID(num)= может иметь значение только цифры, а вы ей посылаете буквы - Click2Call.
Если следовать стандартам, то для скрытия номера надо использовать CALLERID(name)=Anonymous

Видно что пытаетесь это делать через установление SIP заголовков -
Set(PJSIP_HEADER(add,From)=<sip:anonymous@yourdomain.com>) - это верно, а это -
<sip:Click2Call@мойдомен>) - не уверен.
Аватара пользователя
Zavr2008
Сообщения: 2215
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Скрытие набираемого номера через Click2Call

Сообщение Zavr2008 »

И манагер клиенту перезвонить не сможет просто так?
Правильнее в этом случае подмену делать при входящем и исходящем на генерируемый callerid и хранить в БД эту связку.
При исходящем звонке делать обратную подстановку и все будут довольны.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH