Development Information

Home

Sat,04Feb2012

コールバックメッセージ

コールバックメッセージの呼び出される順番

 起動時
1.WM_SIP_NAT  (NATの状態結果報告)
2.WM_SIP_GETIP x2 (LocalHostAddressの検出とGlobalHostAddressの検出)
3.WM_SIP_READY  (SIPエンジンの起動完了)

着信時
1. WM_SIP_INCOMINGCALL (着信を受けた、相手の情報はこの時得られるIDによって取得可能)
2. WM_SIP_PREOPENPORT  (RTPポートのオープン準備。使われるポート番号が知らされる)
3. WM_SIP_CONNECTED (通話受け入れ。WM_SIP_INCOMINGCALL 時のIDを指定する)
4. WM_SIP_HANGUP(通話切断)

 発信時
1. WM_SIP_PREOPENPORT  (RTPポートのオープン準備。使われるポート番号が知らされる)
2. WM_SIP_TRYING  (サーバーからの暫定応答が入った場合)
3. WM_SIP_CONNECTED  (通話のための接続が行われた)
4. WM_SIP_HANGUP (通話切断)

WM_SIP_READY

NAT越えの準備が整い、SIPのパケットを送受信可能になったとき送られる

送られてくる方式 POST 

WPARAM 使われていません
LPARAM 使われていません

WM_SIP_NAT 旧 WM_SIP_STUN

UPnPもしくはSTUNを使いNAT越えをチャレンジしているとき送られる。LPARAMの内容により開始時なのか、完了時なのか判別する必要がある。

送られてくる方式 POST

WPARAM int nNatType =
1:"Open NAT",
2:"Cone NAT",
3:"Restricted NAT",
4:"Port Restricted NAT",
5:"Symmetric NAT",
6:"Symmetric Firewall",
7:"Blocked"
LPARAM

int nStart

0の時NAT調査の開始を表す
1の時STUNによりNATタイプが判明
2の時UPnPによるNAT制御が完了

WM_SIP_ERROR

 こちらから何らかのリクエストパケットを送ったときにサーバーからエラーとしてパケットが届いたときに送られる。

送られてくる方式 POST

WPARAM wID 識別用のID
LPARAM

エラーコード SIPのエラーコードとおなじ番号が入る

400=Bad Request
401=Unauthorized
402=Payment Required
403=Forbidden
404=Not Found
405=Method Not Allowed
406=Not Acceptable
407=Proxy Authentication Required
408=Request Timeout
410=Gone
413=Request Entity Too Large
414=Request-URI Too Long
415=Unsupported Media Type
416=Unsupported URI Scheme
420=Bad Extension
421=Extension Required
423=Interval Too Brief
480=Temporarily Unavailable
481=Call/Transaction Does Not Exist
482=Loop Detected
483=Too Many Hops
484=Address Incomplete
485=Ambiguous
486=Busy Here
487=Request Terminated
488=Not Acceptable Here
491=Request Pending
493=Undecipherable
500=Server Internal Error
501=Not Implemented
502=Bad Gateway
503=Service Unavailable
504=Server Time-out
505=Version Not Supported
513=Message Too Large
600=Busy Everywhere
603=Decline
604=Does Not Exist Anywhere
606=Not Acceptable
999=システムエラー
1000=予約されています
1001=マイクからの入力がない

WM_SIP_REGISTER

SIPレジスターの結果通知として送られる

送られてくる方式 POST

WPARAM wID 識別用のID
LPARAM BOOL bOK レジスターに成功した場合 TRUE

WM_SIP_CONNECTED

通話が確立された時に送られる

送られてくる方式 POST

WPARAM wID 識別用のID
LPARAM 0の時、暫定応答(SessionProgress)で接続されたとき。
0以外の時、通話開始として接続が完了したとき 。

WM_SIP_CLOSESESSION

リクエストパケットを生成したときのセッションが終了したときに送られる

送られてくる方式 POST

PARAM wID 識別用のID
LPARAM 使われていません

WM_SIP_HANGUP

通話が切断された時に送られる

送られてくる方式 POST

WPARAM wID 識別用のID
LPARAM 使われていません

WM_SIP_TRYING

CommandSipInviteを実行した後、その呼び出し中に送られる。

送られてくる方式 POST

WPARAM wID 識別用のID
LPARAM 使われていません

WM_SIP_INCOMINGCALL

相手から電話がかかってきた時に送られる。

送られてくる方式 SEND

WPARAM wID 識別用のID
LPARAM 使われていません

戻り値 戻り値により、その呼を着信するか否か決めることができる。0:通常着信 -1:着信拒否 

WM_SIP_RECORDING

留守番電話が作動するときと、完了した時に送られる。

送られてくる方式 POST

WPARAM 使われていません
LPARAM 録音が開始されたとき TRUE

WM_SIP_PREOPENPORT

RTPポートオープン直前の通知時に送られる。

送られてくる方式 POST

WPARAM 使われていません
LPARAM nPort 使われるRTPのポート番号

WM_SIP_AUTH

新しく認証を要求された時に送られる。

送られてくる方式 POST

WPARAM 使われていません
LPARAM 認証情報構造体 へのポインタ

LRESULT CSDKSampleDlg::OnSipAuth(WPARAM wTemp, LPARAM lParam)
{
if( IsWindowEnabled() ){
//認証情報構造体
SIP_AUTH_INFO* psai = (SIP_AUTH_INFO*)lParam;
CAuthDlg dlg;

dlg.m_strRealm = psai->pRealm;
dlg.m_strAuthID = psai->pID;
dlg.m_strAuthPassword = psai->pPassword;

if( dlg.DoModal() == IDOK ){
#ifdef UNICODE
wcstombs( psai->pID, dlg.m_strAuthID , 255);
wcstombs( psai->pPassword, dlg. m_strAuthPassword , 255);
#else
strcpy( psai->pID, dlg.m_strAuthID );
strcpy( psai->pPassword, dlg. m_strAuthPassword );
#endif
return 1;
}
}
return 0;
}

WM_SIP_TERMINATE

SIPエンジンが完全に停止したときに送られる

送られてくる方式 POST

WPARAM 使われていません
LPARAM 使われていません