Asterisk pjsip sip message

From 탱이의 잡동사니
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Overview

Asterisk pjsip module's sip message 관련 내용 정리

INVITE

Asterisk 에서의 모든 Inbound 채널 및 관련 세션 생성은 INVITE 메시지로부터 시작한다.

Caller info

PJSIP 모듈은 inbound 콜 수행시, INVITE 메시지로부터 채널을 생성하면서, Caller 의 정보를 설정(Parsing)한다.

Caller 정보를 설정할 때 사용하는 SIP header 는 여러가지가 있는데, 다음의 우선 순위로 파싱을 한다.

1. P-Asserted-Identity
2. Remote-Party-ID
3. FROM

즉, 제일 먼저 P-Asserted-Identity 를 확인하고, 설정되어 있지 않다면, Remote-Party-ID 를 확인한다. 그리고 Remote-Party-ID 가 설정되어 있지 않다면 마지막으로 FROM 헤더를 확인하다.

파싱되는 내용은 다음 과 같다. Display name 을 파싱해서 Caller name 으로 사용하고, Username 을 파싱해서 Caller number 로 사용한다.

예를 들어 P-Asserted identity 헤더가 다음과 같이 설정 되었다고 하자.

P-Asserted-Identity="test <1234@test.com>"

그렇다면 다음과 같이 파싱이 된다.

Caller name: test
Caller number: 1234

자세한 함수는

res/res_pjsip_caller_id.c 
static int caller_id_incoming_request(struct ast_sip_session *session, pjsip_rx_data *rdata)

에서 수행한다.