• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
     首頁(yè) > 技術(shù) > 解決方案 > UniMedia 6S級電話(huà)語(yǔ)音中間件典型應用-多機同振 [附源碼]

    UniMedia 6S級電話(huà)語(yǔ)音中間件典型應用-多機同振 [附源碼]

    2009-05-15 00:00:00   作者:   來(lái)源:   評論:0 點(diǎn)擊:


    2009/05/15

    1.應用場(chǎng)景
      假定發(fā)起呼叫的內線(xiàn)分機為1000,同時(shí)響鈴的分機為1001,1002,具體代碼
    //////////////////////////////////////////////////////////////////
    CALL callOriginal
    CALL callFst
    CALL callSnd
    //全局變量聲明
    SCPMANAGER g_SCPManager

    //進(jìn)程主函數
    sub main(LIST& cpl)
    {
    int iCallID, iTaskID, iRet
    string sBno1,sBno2

    //注冊系統錯誤事件處理函數
    EventMap(INF_SYS_ERROR, OnSysError, 0)
    //注冊CALL掛機事件處理函數
    EventMap(INF_CTI_ONHOOK, OnCallEndInform, 0)
    //注冊異步結束事件處理函數
    EventMap(INF_SYS_ASYNCFINISHED, OnAsyncFinished, 0)
    //注冊CALL連接事件處理函數
    EventMap(INF_CTI_ROUTED, OnRoutedInform, 0)


    //獲取進(jìn)程命令行參數中的CallID
    cpl.GetItem(0, iCallID, iRet)

    Log(DBG, "Call Income: CallID=", iCallID)

    //根據對象ID獲得當前Call對象
    g_SCPManager.FindCallByID(iCallID, callOriginal, iRet)
    //設置Call對象的業(yè)務(wù)處理進(jìn)程ID為當前進(jìn)程
    callOriginal.AttachCurrentProcess(iRet)
    //應答CALL
    callOriginal.Answer(iRet)

    //給主叫放等待音樂(lè )
    callOriginal.Play(true,true,"musichold.vox",iTaskID,iRet)

    Log(DBG,"給主叫播放等待音樂(lè )成功,TASKID=",iTaskID)

    //根據業(yè)務(wù)需求確定多個(gè)被叫號碼
    sBno1 = "1001"
    sBno2 = "1002"


    int iMakeTaskID1,iMakeTaskID2
    //發(fā)起兩次呼叫
    g_SCPManager.MakeCall("",sBno1,-1,true,callFst,iMakeTaskID1,iRet)
    if (iRet == RET_FAIL)
    {
    Log(DBG,"呼出失敗,Bno=",sBno1, "; error:",__LASTERRSTR__)
    callOriginal.OnHook(iRet)
    Exit("Make Call Fail")
    }
    else
    {
    //設置Call對象的業(yè)務(wù)處理進(jìn)程ID為當前進(jìn)程
    callFst.AttachCurrentProcess(iRet)
    Log(DBG,"正在呼出,Bno=",sBno1, "; CallID=",callFst.CallID)
    }

    g_SCPManager.MakeCall("",sBno2,-1,true,callSnd,iMakeTaskID2,iRet)
    if (iRet == RET_FAIL)
    {
    Log(DBG,"呼出失敗,Bno=",sBno2, "; error:",__LASTERRSTR__)
    callFst.OnHook(iRet)
    callOriginal.OnHook(iRet)
    Exit("Make Call Fail")
    }
    else
    {
    //設置Call對象的業(yè)務(wù)處理進(jìn)程ID為當前進(jìn)程
    callSnd.AttachCurrentProcess(iRet)
    Log(DBG,"正在呼出,Bno=",sBno2, "; CallID=",callSnd.CallID)
    }

    Log(DBG,"等待主叫用戶(hù)掛機...")
    //等待用戶(hù)掛機事件
    Wait(-1)
    }

    //掛機通知處理函數,只有主叫掛機才結束腳本線(xiàn)程
    sub OnCallEndInform(int tag, CALL& call)
    {
    Log(INF, "OnHooked. CallID=", call.CallID)
    if (call.CallID == callOriginal.CallID)
    {
    Log(INF,"因主叫用戶(hù)掛機,準備結束腳本線(xiàn)程...")
    //增加下面三行就可以了
    int ret
    callFst.StopOP(-1,ret)
    callSnd.StopOP(-1,ret)
    Exit("callOriginal onhook")
    }
    }

    //錯誤處理函數
    sub OnSysError(int tag)
    {
    Log(ERR, "System error: ", __LASTERRSTR__)
    }

    //異步結束事件
    sub OnAsyncFinished(int tag, CALL& call, int optype, int taskid, int ret)
    {
    int iRet

    if (ret == RET_SUCC)
    {
    Log(INF, "異步結束OK. CallID=", call.CallID, " optype=", optype, " taskid=", taskid)
    //如果是MAKE CALL成功異步事件需要進(jìn)行連接處理
    if (optype == 8)
    {
    //停止主叫等待音樂(lè )
    callOriginal.StopOP(-1,iRet)
    //連接主叫和先摘機的被叫
    callOriginal.ConnectCall(call,iRet)

    //停止還沒(méi)有摘機的呼叫
    if (call.CallID == callFst.CallID)
    {

    callSnd.StopOP(-1,iRet)
    }
    elseif(call.CallID == callSnd.CallID)
    {
    callFst.StopOP(-1,iRet)
    }
    }//make call 異步結束
    }
    else
    {
    Log(INF, "異步結束FAIL. CallID=", call.CallID, " optype=", optype, " taskid=", taskid)
    }
    }

    //被路由通知處理函數
    sub OnRoutedInform(int tag, CALL& call1, CALL& call2)
    {
    Log(INF, "Routed. CallID1=", call1.CallID, " CallID2=", call2.CallID)

    CTI論壇報道

    相關(guān)閱讀:

    分享到: 收藏
    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 光山县| 巴南区| 丹棱县| 岢岚县| 教育| 昆山市| 蚌埠市| 高雄市| 沙洋县| 稷山县| 松滋市| 徐水县| 临泉县| 乐业县| 彭泽县| 德庆县| 会东县| 永宁县| 镇安县| 左云县| 萍乡市| 台前县| 青阳县| 灵寿县| 时尚| 临高县| 淮阳县| 沧源| 乐山市| 新昌县| 洪泽县| 镇巴县| 临城县| 福泉市| 武城县| 甘泉县| 芦溪县| 武冈市| 同心县| 图片| 和静县| http://444 http://444 http://444 http://444 http://444 http://444