1

私のフィルターには、以下のすべてが含まれています。電話の着信中にすべてのイベントを見たいと思っていました。そして、これらが起こりました:

--- incoming call
callhub
callnotification
callstate
address
--- incoming call disconnected
callhub
callstate

発信者IDを取得したい. 電話に回線が接続されている間、着信 ID を確認できます。しかし、発火TAPI_EVENT.TE_CALLINFOCHANGEイベントではありません。

        tapiObj.EventFilter = (int)(TAPI_EVENT.TE_ACDGROUP |
                                     TAPI_EVENT.TE_ADDRESSDEVSPECIFIC |
                                     TAPI_EVENT.TE_AGENT |
                                     TAPI_EVENT.TE_AGENTHANDLER |
                                     TAPI_EVENT.TE_AGENTSESSION |
                                     TAPI_EVENT.TE_ASRTERMINAL |
                                     TAPI_EVENT.TE_CALLHUB |
                                     TAPI_EVENT.TE_CALLMEDIA |
                                     TAPI_EVENT.TE_DIGITEVENT |
                                     TAPI_EVENT.TE_FILETERMINAL |
                                     TAPI_EVENT.TE_GATHERDIGITS |
                                     TAPI_EVENT.TE_GENERATEEVENT |
                                     TAPI_EVENT.TE_PHONEDEVSPECIFIC |
                                     TAPI_EVENT.TE_PHONEEVENT |
                                     TAPI_EVENT.TE_PRIVATE |
                                     TAPI_EVENT.TE_QOSEVENT |
                                     TAPI_EVENT.TE_QUEUE |
                                     TAPI_EVENT.TE_REQUEST |
                                     TAPI_EVENT.TE_TAPIOBJECT |
                                     TAPI_EVENT.TE_TONEEVENT |
                                     TAPI_EVENT.TE_TONETERMINAL |
                                     TAPI_EVENT.TE_TTSTERMINAL |
                                     TAPI_EVENT.TE_ADDRESS |
                                     TAPI_EVENT.TE_CALLINFOCHANGE |
                                     TAPI_EVENT.TE_CALLSTATE |
                                     TAPI_EVENT.TE_CALLNOTIFICATION);
4

2 に答える 2

2

最近、私はタピに取り組みました。ここにサンプルコードがあります.....

 cn=new callnotification();
 tobj.ITTAPIEventNotification_Event_Event+= new 
 TAPI3Lib.ITTAPIEventNotification_EventEventHandler(cn.Event);
  tobj.EventFilter = (int)(TAPI_EVENT.TE_CALLNOTIFICATION | TAPI_EVENT.TE_REQUEST | 
             TAPI_EVENT.TE_CALLINFOCHANGE |
                TAPI_EVENT.TE_DIGITEVENT|
                TAPI_EVENT.TE_PHONEEVENT|
                TAPI_EVENT.TE_CALLSTATE|
                TAPI_EVENT.TE_GENERATEEVENT|
                TAPI_EVENT.TE_CALLINFOCHANGE |TAPI_EVENT.TE_ADDRESS
                );



class callnotification:TAPI3Lib.ITTAPIEventNotification
{
    public delegate void listshow(string str);
    public listshow addtolist;
    string callerid;


    public void Event(TAPI3Lib.TAPI_EVENT te,object eobj)
    {
        switch(te)
        {

            case TAPI3Lib.TAPI_EVENT.TE_DIGITEVENT:
                TAPI3Lib.ITDigitDetectionEvent dd=(TAPI3Lib.ITDigitDetectionEvent)eobj;
                addtolist("Dialed digit"+dd.ToString());
                break;
            case TAPI3Lib.TAPI_EVENT.TE_GENERATEEVENT:
                TAPI3Lib.ITDigitGenerationEvent dg=(TAPI3Lib.ITDigitGenerationEvent)eobj;
                MessageBox.Show("digit dialed!");
                addtolist("Dialed digit"+dg.ToString());
                break;
            case TAPI3Lib.TAPI_EVENT.TE_PHONEEVENT:
                addtolist("A phone event!");
                break;
            case TAPI3Lib.TAPI_EVENT.TE_GATHERDIGITS:
                addtolist("Gather digit event!");
                break;
            case TAPI3Lib.TAPI_EVENT.TE_CALLSTATE:
                TAPI3Lib.ITCallStateEvent a=(TAPI3Lib.ITCallStateEvent)eobj;
                TAPI3Lib.ITCallInfo b=a.Call;

                try
                {
                    callerid = b.get_CallInfoString(CALLINFO_STRING.CIS_CALLEDIDNUMBER);

                    addtolist("Successfully Disconnect");

                }
                catch (Exception e)
                {

                    addtolist(e.Message);
                }

            switch(b.CallState)
            {
                case TAPI3Lib.CALL_STATE.CS_INPROGRESS:
                    addtolist("INPROGRESS" );  
                                            break;
                case TAPI3Lib.CALL_STATE.CS_DISCONNECTED:
                    addtolist("Disconnected");
                    break;
                case TAPI3Lib.CALL_STATE.CS_OFFERING:
                    addtolist("A party wants to communicate with you!");
                    break;
                case TAPI3Lib.CALL_STATE.CS_IDLE:
                    addtolist("Call is created!");
                    break;

            }
            break;
            case TAPI3Lib.TAPI_EVENT.TE_CALLNOTIFICATION: 
                addtolist("call notification event has occured");
                 break;
        }
    }
}
于 2012-09-13T10:54:44.630 に答える