Или ещё баг, не баг, но даёт трудности
на пример , захотелось мне IP собираться в CDR с устройство, откуда звонки идут.
На chan_sip , можно было зауюзать так
exten => s,n,Set(CDR(recvip)=${CHANNEL(recvip)})
В PJSIP такая радость отсутвует, нужно делать по другому
exten => _X.,1,Set(CONTACT=${PJSIP_AOR(${CHANNEL(endpoint)},contact)})
exten => h,n,Set(CDR(peerip)=${PJSIP_CONTACT(${CONTACT},via_addr)})
exten => h,n,Set(CDR(recvip)=${PJSIP_CONTACT(${CONTACT},uri)})
Где в peerip - у меня IP устройства за НАТом
recvip - тут URI
А теперь из прикольного. Устройство допустим не зарегистрованно, но делает вызов, авторизуется за два INVITE, а поле CONTAC пустое в Астериске по этому пиру, т.к. нет регистрации. И всё фиг ты данные выдёргиваешь, т.к. ${PJSIP_AOR(${CHANNEL(endpoint)},contact)} - пустая переменная.