1

人間が電話を持ち上げた瞬間にアクションを追加します(例:open Notepad)。どちらeventを使うべきですか?events私はから多くを試しましたが、ManagerConnection解決策を見つけることができませんでした。

編集:スクリーンショットと同じ機能を実行します(人間が電話を持ち上げたときに何かを作成します)。ADATプログラムにはこの機能があり、これもあります。

ここに画像の説明を入力してください

編集2:私は解決策を見つけました。サンプルコード:

イベントを購読する

managerConnection.NewState += new NewStateEventHandler(Monitoring_NewState);

    private void Monitoring_NewState(object sender, NewStateEvent e)
    {
        string state = e.State;
        string callerID = e.CallerId;
        if ((state == "Ringing") | (e.ChannelState == "5"))
        {
            String connectedLineNum;
            String connectedLineName;

            Dictionary<String, String> attributes = e.Attributes;

            attributes.TryGetValue("connectedlinenum", out connectedLineNum);
            attributes.TryGetValue("connectedlinename", out connectedLineName);
            // "callerID" - called phone number
            // "connectedLineNum" - calling phone number

            // CallIn. Incoming call
        }
        else if ((state == "Ring") | (e.ChannelState == "4"))
        {
            // CallOut. Outcoming call
        }
        else if ((state == "Up") | (e.ChannelState == "6"))
        {
            String connectedLineNum;
            String connectedLineName;


            Dictionary<String, String> attributes = e.Attributes;

            attributes.TryGetValue("connectedlinenum", out connectedLineNum);
            attributes.TryGetValue("connectedlinename", out connectedLineName);
            // "callerID" - called phone number
            // "connectedLineNum" - calling phone number

            // human lifted up the phone right now
        }
    }
4

1 に答える 1

0

voipの場合に人間が電話を持ち上げても何も起こりません。Voip/sip はデジタル ネットワークです。その結果、電話 (クライアント) は、何も起こらない (ユーザーが電話番号を入力していない) 場合、サーバーを分散しません。リフトアップ時に自動ダイヤル # を使用するクライアントもいくつかありますが (テレホン カード公衆電話のインストールで使用されます)、ほとんどの電話はそのイベントについてサーバー (アスタリスク) に通知しません。その結果、プログラムでこのイベントを取得できません。

于 2012-12-27T17:49:39.670 に答える