PJSIP自定义注册标题
我尝试设置与内部服务器(使用PJSIP库)的SIP通信,但是,此服务器需要一个自定义标头字段与REGISTRATION
调用指定的标头值。 例如,我们将调用这个必需的标题MyHeader
。
从我发现, pjsua_acc_add()
函数将添加一个帐户,并使用configuration结构注册到服务器。
config结构体的参数reg_hdr_list
的描述如下:
将可选的自定义SIP头部放入注册请求中。
这听起来正是我所需要的,但是对通话本身没有任何影响。
以下是我到目前为止:
pjsua_acc_config cfg; pjsua_acc_config_default(&cfg); //...Some other config stuff related to the server... pjsip_hdr test; test.name = pj_str("MyHeader"); test.sname = pj_str("MyHdr"); test.type = PJSIP_H_OTHER; test.prev = cfg.reg_hdr_list.prev; test.next = cfg.reg_hdr_list.next; cfg.reg_hdr_list = test; pj_status_t status; status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
从服务器端,没有额外的头字段或任何东西。 而用于定义头部( pjsua_hdr
)的结构没有value
或等价的字段,所以即使它创build了头部,它是如何设置值的?
这里是头列表定义的参考和头结构的参考 。
编辑:我发现解决scheme感谢同事:
struct pjsip_generic_string_hdr CustomHeader; pj_str_t name = pj_str("MyHeader"); pj_str_t value = pj_str("HeaderValue"); pjsip_generic_string_hdr_init2(&CustomHeader, &name, &value); pj_list_push_back(&cfg.reg_hdr_list, &CustomHeader);
这似乎按预期工作。
只是在find解决scheme时引用OP,但忘了添加它作为答案:
编辑:我发现解决scheme感谢同事:
struct pjsip_generic_string_hdr CustomHeader; pj_str_t name = pj_str("MyHeader"); pj_str_t value = pj_str("HeaderValue"); pjsip_generic_string_hdr_init2(&CustomHeader, &name, &value); pj_list_push_back(&cfg.reg_hdr_list, &CustomHeader);
这似乎按预期工作。