FreeSwitch ESL——Event Object,Connect Object(イベントソケットのイベントオブジェクトおよび接続オブジェクト)
6792 ワード
Event Object
new
構文:
new($event_type [, $event_subclass])
≪アクション|Actions|emdw≫:次の方法を使用するために、新しいイベント・オブジェクトをインスタンス化します.
serialize
構文:
役割:イベントを「name:value」のようなコロン分割のキーペアに変換します.$formatの値は、次のようになります.
1. “xml“
2. “json”
3. “plain”(default)
setPriority
構文:
≪アクション|Action|ldap≫:イベントの優先度を設定します.
getHeader
構文:
≪アクション|Actions|emdw≫:イベント・オブジェクトの$header_に基づいて名前でヘッダ値を取得
getBody
構文:
getBody()
≪アクション|Action|ldap≫:イベント・オブジェクトの本文を取得します.
getType
構文:
getType()
≪アクション|Action|ldap≫:イベント・オブジェクトのタイプを取得します.
addBody
構文:
addBody($value)
≪アクション|Actions|emdw≫:イベント・オブジェクトの本文に$valueを追加します.このオブジェクトは、同じイベントオブジェクトで複数回呼び出される可能性があります.
addHeader
構文:
≪アクション|Actions|emdw≫:イベント・オブジェクトに値の対をヘッダー・ドメインに追加します.このオブジェクトは、同じイベントオブジェクトで複数回呼び出される可能性があります.
delHeader
構文:
役割:イベントオブジェクトから$headerという名前を削除します.nameのヘッダドメイン
firstHeader
構文:
≪アクション|Actions|emdw≫:ポインタをイベント・オブジェクトのヘッダ・ドメインに設定し、最初のヘッダ・ドメインのキー値を返します.この関数はnextHeaderオブジェクト呼び出し前に呼び出す必要があります
nextHeader
構文:
≪アクション|Actions|emdw≫:イベント・オブジェクトの次のヘッダ領域にポインタを移動し、キー値を返します.呼び出す前にfirstHeaderを呼び出してポインタを設定する必要があります!現在の位置がすでにヘッダドメインの最後のノードである場合、関数を呼び出すとNULLを指します.
Connection Object
new
構文1:
構文2:
new($fd)
役割:既存のソケットハンドルに基づいてESL接続オブジェクトのインスタンスを初期化します.
Outbound(FreeSwitch)モードのみ有効です.inboundモードで有効なソケットハンドルを渡しても無効です.
役割:ESL接続オブジェクトのインスタンスを初期化します.次の3つのパラメータは、ホスト名、ポート番号、パスワードです.
この関数はinboundモード(FreeSwitchがサービス側)でのみ有効です.換言すれば、関数の目的は、FreeSWITCHに接続されたオブジェクトを作成することであり、任意のコールまたはチャネルにバインドされていない.
チャネル情報は初期化されていません(inbound接続はいずれのチャネルにもバインドされていないため).簡単に言えば、getInfo()関数を呼び出すと常にNULLが返されます.
socketDescriptor
構文:
役割:接続オブジェクトが接続されている場合は、接続オブジェクトのUNIXファイル記述ハンドル(FD)を返します.
connected
構文:
connected()
≪アクション|Actions|emdw≫:接続オブジェクトが接続されているかどうかをテストします.接続されている場合は1を返します.そうでない場合は0を返します.
getInfo
構文:
getInfo()
役割:FreeSwitchがoutboundモードで接続されている場合、初期化フェーズで「CHANNEL_」が最初に送信されます.DATEイベント.この関数は、オブジェクトに関連するチャネル情報を返します.
FreeSwitchがinboundモードの場合、NULLが返されます
send
構文:
役割:FreeSwitchにコマンドを送信
応答を待つのではなく、recvEventまたはrecvEventTimeを呼び出して受信イベントをループする必要があります.この応答には、api/responseまたはcommand/replyの値を含む「content-type」というヘッダドメインが含まれます.
応答イベントを自動的に待つにはsendRecv()を使用します.
sendRecv
構文:
役割:sendRecv($command)は呼び出し時にsend($command)を呼び出し、recvEvent()を呼び出してESLイベントのインスタンスを返します.
recvEvent()は、1つのループで呼び出され、受信したヘッダドメインに「api/response」または「command/reply」の値が含まれていることを知ってから、ESLイベントオブジェクトインスタンスに戻ります.
この期間中に受信したすべてのイベントは、後続のrecvEvent()から取得できる内部キューに保存されます.
api
構文:
役割:FreeSWITCHサーバにAPIコマンドを送信します.このコマンドは、コマンドの実行が終了するまでブロックされます.
api($command,$args)はsendRecv("api$command$args)に等しい
bgapi
構文:
役割:FreeSWITCHサーバにバックグラウンドAPIコマンドを送信します.このコマンドは、独自のスレッドで実行されます.
bgapi($command,$args)はsendRecv("bgapi$command$args)に等しい.
sendEvent
構文:
役割:FreeSwitchにイベントを送信します.
recvEvent
構文:
役割:FreeSwitchに受信したイベントを返します.イベントが受信されると、関数はブロックされた状態で、新しいイベントが来ることを知っています.
コール中にsendRecv()キューにイベントがある場合、キュー内の最初のイベントが返され、キューから削除されます.すなわち、接続中にイベントを読み取ることができる.
recvEventTimed
構文:
役割:recvEvent()に似ていますが、$millisecondsミリ秒がブロックされます.
パラメータを0に設定すると、すぐに戻ります.このプロパティはポーリングで特に役立ちます.
filter
構文:
≪アクション|Actions|emdw≫:フィルタをインストールします.このフィルタは、出力フィルタではなく入力フィルタです.すなわち、条件を満たしてこそシステムに入ることができる.
events
構文:
役割:$event_typeの値は「plain」または「xml」であり、他の入力は「plain」と解釈されます.
myevents(eventの特殊な場合、outboundモードで使用)を呼び出すにはsendRecv(「myevents」)を使用して呼び出さなければなりません.eventsを使用して呼び出さないでください.
execute
構文:
役割:ダイヤルアップ計画のアプリケーションを実行し、サーバから送信された応答を待つ.ソケットの接続は、1つのチャネルに固定されるものではなく(ほとんどの場合inboundモード)、uuidはappのチャネル情報を示す3つのパラメータが必要である.
この関数は、応答を含むESLイベントオブジェクトを返します.getHeader(‘Reply-Text’)で応答値を取り出すことができます.応答値が「+OK[Success Message]であれば成功、「-ERR[Error Message]であれば失敗.
次の例では、excuse()コマンドを呼び出すとuuidを取得する方法を示します.
inboundモードでは、次のコマンドに従って新しいuuidを取得できます.
outboundモードでは、以下のコマンドに従って取得できます.
executeAsync
構文:
役割:executeと同じですが、サーバの応答を待っている間にブロックされません.実はこの関数も本質的にexecute()関数を呼び出したのですが、「async:true」のヘッダを増やしただけです.
setAsyncExecute
構文:
≪アクション|Actions|emdw≫:ソケット接続を非同期モードに強制的に設定します.このコマンドはoutboundモードでは機能しません.
$valueが1の場合、非同期モードが強制的にオンになり、0が同期モードになります.
特に、setAsysncExecute(1)を呼び出す本質は、「asysnc:true」ヘッダ付きexecute()関数を呼び出すことである.他のソケットルーティングは、この設定の影響を受けません.
setEventLock
構文:
≪アクション|Actions|emdw≫:ソケット接続に同期モードを強制的にオンにします.このコマンドはoutboundモードでは機能しません.dialplanでは非同期モードに設定されていないため、これらの接続は同期モードにあるためです.
$valueは1で同期モードを開き、0で強制的に開かないことを示します.
なお、setEventLock(1)を呼び出す操作は、呼び出しバンド「event-lock:true」ヘッダのexecute()関数と等価である.他のイベントソケットルーティングは、この設定の影響を受けません.
disconnect
構文:
disconnect()
作用:接続を閉じる
freeSwitch1.4バージョン(2014-02-16以降のマスターバージョン)のC言語呼び出し例は以下の通りである.
Event Socket Command翻訳の出典:http://wiki.freeswitch.org/wiki/Event_Socket
その他の翻訳の出典:https://freeswitch.org/confluence/display/FREESWITCH/Event+Socket+Library
new
構文:
new($event_type [, $event_subclass])
≪アクション|Actions|emdw≫:次の方法を使用するために、新しいイベント・オブジェクトをインスタンス化します.
serialize
構文:
serialize([$format])
役割:イベントを「name:value」のようなコロン分割のキーペアに変換します.$formatの値は、次のようになります.
1. “xml“
2. “json”
3. “plain”(default)
setPriority
構文:
setPriority([$number])
≪アクション|Action|ldap≫:イベントの優先度を設定します.
getHeader
構文:
getHeader($header_name)
≪アクション|Actions|emdw≫:イベント・オブジェクトの$header_に基づいて名前でヘッダ値を取得
getBody
構文:
getBody()
≪アクション|Action|ldap≫:イベント・オブジェクトの本文を取得します.
getType
構文:
getType()
≪アクション|Action|ldap≫:イベント・オブジェクトのタイプを取得します.
addBody
構文:
addBody($value)
≪アクション|Actions|emdw≫:イベント・オブジェクトの本文に$valueを追加します.このオブジェクトは、同じイベントオブジェクトで複数回呼び出される可能性があります.
addHeader
構文:
addHeader($header_name, $value)
≪アクション|Actions|emdw≫:イベント・オブジェクトに値の対をヘッダー・ドメインに追加します.このオブジェクトは、同じイベントオブジェクトで複数回呼び出される可能性があります.
delHeader
構文:
delHeader($header_name)
役割:イベントオブジェクトから$headerという名前を削除します.nameのヘッダドメイン
firstHeader
構文:
firstHeader()
≪アクション|Actions|emdw≫:ポインタをイベント・オブジェクトのヘッダ・ドメインに設定し、最初のヘッダ・ドメインのキー値を返します.この関数はnextHeaderオブジェクト呼び出し前に呼び出す必要があります
nextHeader
構文:
nextHeader()
≪アクション|Actions|emdw≫:イベント・オブジェクトの次のヘッダ領域にポインタを移動し、キー値を返します.呼び出す前にfirstHeaderを呼び出してポインタを設定する必要があります!現在の位置がすでにヘッダドメインの最後のノードである場合、関数を呼び出すとNULLを指します.
Connection Object
new
構文1:
new($host, $port, $password)
構文2:
new($fd)
役割:既存のソケットハンドルに基づいてESL接続オブジェクトのインスタンスを初期化します.
Outbound(FreeSwitch)モードのみ有効です.inboundモードで有効なソケットハンドルを渡しても無効です.
役割:ESL接続オブジェクトのインスタンスを初期化します.次の3つのパラメータは、ホスト名、ポート番号、パスワードです.
この関数はinboundモード(FreeSwitchがサービス側)でのみ有効です.換言すれば、関数の目的は、FreeSWITCHに接続されたオブジェクトを作成することであり、任意のコールまたはチャネルにバインドされていない.
チャネル情報は初期化されていません(inbound接続はいずれのチャネルにもバインドされていないため).簡単に言えば、getInfo()関数を呼び出すと常にNULLが返されます.
socketDescriptor
構文:
socketDescriptor()
役割:接続オブジェクトが接続されている場合は、接続オブジェクトのUNIXファイル記述ハンドル(FD)を返します.
connected
構文:
connected()
≪アクション|Actions|emdw≫:接続オブジェクトが接続されているかどうかをテストします.接続されている場合は1を返します.そうでない場合は0を返します.
getInfo
構文:
getInfo()
役割:FreeSwitchがoutboundモードで接続されている場合、初期化フェーズで「CHANNEL_」が最初に送信されます.DATEイベント.この関数は、オブジェクトに関連するチャネル情報を返します.
FreeSwitchがinboundモードの場合、NULLが返されます
send
構文:
send($command)
役割:FreeSwitchにコマンドを送信
応答を待つのではなく、recvEventまたはrecvEventTimeを呼び出して受信イベントをループする必要があります.この応答には、api/responseまたはcommand/replyの値を含む「content-type」というヘッダドメインが含まれます.
応答イベントを自動的に待つにはsendRecv()を使用します.
sendRecv
構文:
sendRecv($command)
役割:sendRecv($command)は呼び出し時にsend($command)を呼び出し、recvEvent()を呼び出してESLイベントのインスタンスを返します.
recvEvent()は、1つのループで呼び出され、受信したヘッダドメインに「api/response」または「command/reply」の値が含まれていることを知ってから、ESLイベントオブジェクトインスタンスに戻ります.
この期間中に受信したすべてのイベントは、後続のrecvEvent()から取得できる内部キューに保存されます.
api
構文:
api($command[, $arguments])
役割:FreeSWITCHサーバにAPIコマンドを送信します.このコマンドは、コマンドの実行が終了するまでブロックされます.
api($command,$args)はsendRecv("api$command$args)に等しい
bgapi
構文:
bgapi($command[, $arguments][,$custom_job_uuid])
役割:FreeSWITCHサーバにバックグラウンドAPIコマンドを送信します.このコマンドは、独自のスレッドで実行されます.
bgapi($command,$args)はsendRecv("bgapi$command$args)に等しい.
sendEvent
構文:
sendEvent($send_me)
役割:FreeSwitchにイベントを送信します.
recvEvent
構文:
recvEvent()
役割:FreeSwitchに受信したイベントを返します.イベントが受信されると、関数はブロックされた状態で、新しいイベントが来ることを知っています.
コール中にsendRecv()キューにイベントがある場合、キュー内の最初のイベントが返され、キューから削除されます.すなわち、接続中にイベントを読み取ることができる.
recvEventTimed
構文:
recvEventTimed($milliseconds)
役割:recvEvent()に似ていますが、$millisecondsミリ秒がブロックされます.
パラメータを0に設定すると、すぐに戻ります.このプロパティはポーリングで特に役立ちます.
filter
構文:
filter($header, $value)
≪アクション|Actions|emdw≫:フィルタをインストールします.このフィルタは、出力フィルタではなく入力フィルタです.すなわち、条件を満たしてこそシステムに入ることができる.
events
構文:
events($event_type,$value)
役割:$event_typeの値は「plain」または「xml」であり、他の入力は「plain」と解釈されます.
myevents(eventの特殊な場合、outboundモードで使用)を呼び出すにはsendRecv(「myevents」)を使用して呼び出さなければなりません.eventsを使用して呼び出さないでください.
execute
構文:
execute($app[, $arg][, $uuid])
役割:ダイヤルアップ計画のアプリケーションを実行し、サーバから送信された応答を待つ.ソケットの接続は、1つのチャネルに固定されるものではなく(ほとんどの場合inboundモード)、uuidはappのチャネル情報を示す3つのパラメータが必要である.
この関数は、応答を含むESLイベントオブジェクトを返します.getHeader(‘Reply-Text’)で応答値を取り出すことができます.応答値が「+OK[Success Message]であれば成功、「-ERR[Error Message]であれば失敗.
次の例では、excuse()コマンドを呼び出すとuuidを取得する方法を示します.
inboundモードでは、次のコマンドに従って新しいuuidを取得できます.
$uuid = $esl->api("create_uuid")->getBody();
outboundモードでは、以下のコマンドに従って取得できます.
$uuid = $esl->getInfo()->getHeader("unique-id")
executeAsync
構文:
executeAsync($app[, $arg][, $uuid])
役割:executeと同じですが、サーバの応答を待っている間にブロックされません.実はこの関数も本質的にexecute()関数を呼び出したのですが、「async:true」のヘッダを増やしただけです.
setAsyncExecute
構文:
setAsyncExecute($value)
≪アクション|Actions|emdw≫:ソケット接続を非同期モードに強制的に設定します.このコマンドはoutboundモードでは機能しません.
$valueが1の場合、非同期モードが強制的にオンになり、0が同期モードになります.
特に、setAsysncExecute(1)を呼び出す本質は、「asysnc:true」ヘッダ付きexecute()関数を呼び出すことである.他のソケットルーティングは、この設定の影響を受けません.
setEventLock
構文:
setEventLock($value)
≪アクション|Actions|emdw≫:ソケット接続に同期モードを強制的にオンにします.このコマンドはoutboundモードでは機能しません.dialplanでは非同期モードに設定されていないため、これらの接続は同期モードにあるためです.
$valueは1で同期モードを開き、0で強制的に開かないことを示します.
なお、setEventLock(1)を呼び出す操作は、呼び出しバンド「event-lock:true」ヘッダのexecute()関数と等価である.他のイベントソケットルーティングは、この設定の影響を受けません.
disconnect
構文:
disconnect()
作用:接続を閉じる
freeSwitch1.4バージョン(2014-02-16以降のマスターバージョン)のC言語呼び出し例は以下の通りである.
int main(void)
{
char *private_data = "some private string or struct ...";
esl_global_set_default_logger(7);
esl_listen_threaded("localhost", 8040, mycallback, private_data, 100000);
return 0;
}
Event Socket Command翻訳の出典:http://wiki.freeswitch.org/wiki/Event_Socket
その他の翻訳の出典:https://freeswitch.org/confluence/display/FREESWITCH/Event+Socket+Library