1

ダイヤル後に送信されたサーバーのテキスト応答を取得しようとしています

このようなログを取得しています

から: ;tag=as121b5ca6

To: "私" ;tag=FP0KRz3fkxBtR6q19Er1ykMXhHCqtqOU

コール ID: ltPywl5Qkt5JwdG47.U0K2J.R.YZN0my

CSeq: 103 メッセージ

ユーザーエージェント: アスタリスク PBX 1.6.2.18

コンテンツ タイプ: テキスト/プレーン;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私の質問が明確であることを願っています

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 に答える