我正在尝试获取在拨号后发送的服务器文本响应
我正在获取这样的日志
来自:; tag = as121b5ca6
收件人:“我”; tag = FP0KRz3fkxBtR6q19Er1ykMXhHCqtqOU
Call-ID:ltPywl5Qkt5JwdG47.U0K2J.R.YZN0my
CSeq:103 MESSAGE
User-Agent:Asterisk PBX 1.6.2.18
Content-Type:text / plain; charset = UTF-8
内容长度:137
ResultHead = STARS1STARSText = STARS 2764 6053 2778 7089 7541 7156 4997 3457 4438 3666 2246 1307 3666 2246 300 4838 7230 4577 4216 3811 STARS
我想获取'ResultHead'
知道我得到很多这样的消息..是否有任何功能(我确定有但我无法看到它)只获取此消息或至少将标题作为字符串...
我想我需要使用这个功能,但我不知道如何!!
static pjsip_rx_data *get_rx_data(pjsip_event *e)
{
if (e->type == PJSIP_EVENT_RX_MSG)
return e->body.rx_msg.rdata;
if (e->type == PJSIP_EVENT_TSX_STATE && e->body.tsx_state.type == PJSIP_EVENT_RX_MSG)
return e->body.tsx_state.src.rdata;
// There's no rdata on this eevnt
return NULL;
}
*我在Pjsip ..thnx上使用虹吸管 我希望我的问题很清楚
答案 0 :(得分:1)
看起来我最后回答了我的问题
因为很难找到答案,至少它对我来说..我会发布它,希望有人会利用它..
首先你需要创建新模块并注册它,
fisrt创建pjsip_module
pj_bool_t logging_on_rx_msg(pjsip_rx_data *rdata);
static pj_status_t logging_on_tx_msg(pjsip_tx_data *tdata);
static pjsip_module my_pjsua_msg_logger =
{
NULL, NULL, /* prev, next. */
{ "my_mod-pjsua-log", 13 }, /* Name. */
-1, /* Id */
PJSIP_MOD_PRIORITY_TRANSPORT_LAYER-1,/* Priority */
NULL, /* load() */
NULL, /* start() */
NULL, /* stop() */
NULL, /* unload() */
&logging_on_rx_msg, /* on_rx_request() */
&logging_on_rx_msg, /* on_rx_response() */
&logging_on_tx_msg, /* on_tx_request. */
&logging_on_tx_msg, /* on_tx_response() */
NULL, /* on_tsx_state() */
};
在sip_connect函数中使用
pjsip_endpt_register_module(pjsua_get_pjsip_endpt(), &my_pjsua_msg_logger);
现在实现了reciepient函数
static pj_status_t logging_on_tx_msg(pjsip_tx_data *tdata)
{
/* Important note:
* tp_info field is only valid after outgoing messages has passed
* transport layer. So don't try to access tp_info when the module
* has lower priority than transport layer.
*/
/* Always return success, otherwise message will not get sent! */
return PJ_SUCCESS;
}
pj_bool_t logging_on_rx_msg(pjsip_rx_data *rdata)
{
NSLog(@"\n recieving rx msg %s--end my joy",rdata->msg_info.msg_buf);
if (rdata->msg_info.msg->type == PJSIP_RESPONSE_MSG)
{
do something
}
return PJ_FALSE;
}