1

我正在尝试获取拨号后发送的服务器文本响应

我得到这样的日志

来自:;tag=as121b5ca6

收件人:“我”;tag=FP0KRz3fkxBtR6q19Er1ykMXhHCqtqOU

呼叫 ID:ltPywl5Qkt5JwdG47.U0K2J.R.YZN0my

CSeq: 103 消息

用户代理:Asterisk PBX 1.6.2.18

内容类型:text/plain;charset=UTF-8

内容长度:137

结果头=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 上使用 siphon 我希望我的问题很清楚

4

1 回答 1

2

看来我最终回答了我的问题

因为至少对我来说很难找到答案..我会发布它,希望有人会利用它..

首先你需要创建新模块并注册它,

首先创建 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);

现在执行接收者功能

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;

}
于 2012-12-04T19:38:50.097 回答