Страница 1 из 1

FreeSwitch модификация Contact Header

Добавлено: 19 ноя 2020, 19:06
lext55
Здравствуйте, коллеги.

Имеею: debian 10 , freeswitch 1.10.05 из репозитория. Стыки без регистраций по IP адресу.
Вызов приходит по одному стыку без регистрации, и уходит по другому стыку без регистрации.

Требуется изменить поле Contact. Таким образом, чтобы в User Part был CallerID (номер звонящего).
Т.е. изменить поле Contact на B-led в исходящих INVITE.

Т.е. от вида:

Код: Выделить всё

Contact: <sip:gw+gw-eltex@192.168.15.1:5060>
Привести к виду:

Код: Выделить всё

Contact: <sip:74955555555@192.168.15.1:5060>
Что уже делал: нагуглил переменные
sip_contact_params
sip_contact_user
sip_contact_port
sip_contact_uri
sip_contact_host
И пробовал менять их значение на B стороне (в диалплане) , например вот так:

Код: Выделить всё

<action application="export" data="nolocal:sip_contact_user=74955555555"/>
Либо так

Код: Выделить всё

<action application="bridge" data="{sip_contact_user=74955555555}sofia/gw-eltex/$1"/>
Без результатов. Точнее так: само значение переменной на B-стороне меняется (проверял uuid_dump) , но в исходящих INVITE ничего не происходит.

После 2 дней с WireShark-ом все-таки смог поменять значение user part в поле Contact, в gateway нужно добавить конфиг:

Код: Выделить всё

<param name="username" value="74955555555"/>
<param name="extension" value="74955555555"/>
<param name="extension-in-contact" value="true"/>
Проблема заключается в следующем: в данном месте конфига работают только глобальные переменные $${variable_name} , переменные из диалплана сюда не передаются ${variable_name}.

В общем как в User Part в поле Contact запихнуть значение переменной CallerID ?

У меня не получается манипулировать ни каким полем Contact в исходящих INVITE.

Также отдельно замечую поведение при назначении вот этой переменной на B-стороне

Код: Выделить всё

sip_outgoing_contact_uri
Чтобы я туда не записал, выходит ошибка что недопустимое значение переменной.


Также пробовал манипулировать вот этой переменной

Код: Выделить всё

sip_invite_contact_params
эта переменная дописывает параметры через точку с запятой к текущему полю Contact. По факту корректно работает только эта переменная. Но она позволяет только дописать extra params в поле Contact , поменять текущие значения user , host она не может .

Re: FreeSwitch модификация Contact Header

Добавлено: 05 авг 2022, 11:34
a.bunakov
Я тоже долго мучался с данной проблемой, но решил частично, зайдя через задний проход)), делаю набор НЕ через sofia/gateway/<GW>/<Number>, а так:
action/bridge/{sip_contact_user=${effective_caller_id_number}}sofia/internal/$1@1.1.1.1:5060;transport=udp
тогда поле контакт содержит норм информацию, единственное теряется имя, но не критично, связка с Avaya SM там поменял на транкгруппе от SM Identity for Calling Party Display: на From, все заработало как надо, до этого стоял P-Asserted-Identity, причем генерил P-Asserted-Identity на FS до этого вызовы вообще не проходили с 404.