コールバックメッセージ
コールバックメッセージの呼び出される順番
起動時
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
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 使われていません
