The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Cisci IVR, !*! Cisci IVR, 22-Дек-06, 09:21  [смотреть все]
Обычный IVR
Человек звонит на номер 555555. Играет приветствие.
Набераешь внутренний - уходишь на внутренний
Таймаут - ушел на секретарей, номер 111
набрал не существующий номер - ушел на секретарей, номер 111

Все ок.

Вот скрипт

proc init { } {
    global param
    global retryCnt
    global ParamForDest

    set param(abortKey)             *
    set param(interruptPrompt)         true
    set param(ignoreInitialTermKey)     true

    set ParamForDest(abortKey)         *
    set ParamForDest(initialDegitTimeout)     10
    set ParamForDest(terminationKey)     #
    set ParamForDest(interruptPrompt)     true
    set ParamForDest(dialPlanTerm)         true
    set ParamForDest(ignoreInitialTermKey)     true

    return
    }

proc init_perCallVars { } {
    global PromptFlag
    global DestPromptFlag
    global NoPlayWarn
    global NoTimeLimit
    global SetupDone

    set PromptFlag                0
    set DestPromptFlag            0
    set NoPlayWarn                           0
    set NoTimeLimit                          0
    set SetupDone                            0

    return
    }

proc act_Setup { } {
    global params
    set params(interruptPrompt) true
    set params(dialPlan) true

    puts "\n---- in act_Setup \n"
    init_perCallVars
    leg setupack leg_incoming
#    infotag set med_language prefix "ru"
#    SelectLanguageMenu
    media play leg_incoming flash:ru_welcome.au
    puts "\n---- playing welcome.au \n"
    leg collectdigits leg_incoming params
    fsm setstate GETDEST
    return
    }

proc act_GotDestination { } {
    global NumSedtPrompt

    puts "\n---- in  act_GotDestination\n"    
    set status [infotag get evt_status]
        puts "\n---- act_GotDestination status: $status \n"    

    # Вот здесь, внутренный набран правильно, уходим на него
    if {$status == "cd_004"} {
    set dest [infotag get evt_dcdigits]
    leg setup $dest callInfo leg_incoming
        }

    # Тут, тайм аут, ничего не набрали...
    if {$status == "cd_001"} {
    set dest [infotag get evt_dcdigits]
    leg setup 111 callInfo leg_incoming
        }

    # Набрали, но номера не существует...
    if {$status == "cd_006"} {
    set dest [infotag get evt_dcdigits]
    leg setup 111 callInfo leg_incoming
        }

    return
    }


set ivr_fsm(CALLCOMES,ev_setup_indication) "act_Setup        same_state"
set ivr_fsm(GETDEST,ev_collectdigits_done) "act_GotDestination        same_state"
fsm define ivr_fsm CALLCOMES

Вот.
Но, есть 8-межгород, и 9-выход на город. Т.е. можно позвонив на 555555, можно обратно уйти в город или даже на межгород... Дырочка, однако...
Пытаюсь отловить нажатие этих двух кнопок. Вот код:

proc init { } {
    global param
    global retryCnt
    global ParamForDest

    set param(abortKey)             *
    set param(interruptPrompt)         true
    set param(ignoreInitialTermKey)     true

    set ParamForDest(abortKey)         *
    set ParamForDest(initialDegitTimeout)     10
    set ParamForDest(terminationKey)     #
    set ParamForDest(interruptPrompt)     true
    set ParamForDest(dialPlanTerm)         true
    set ParamForDest(ignoreInitialTermKey)     true

    return
    }

proc init_perCallVars { } {
    global PromptFlag
    global DestPromptFlag
    global NoPlayWarn
    global NoTimeLimit
    global SetupDone

    set PromptFlag                0
    set DestPromptFlag            0
    set NoPlayWarn                           0
    set NoTimeLimit                          0
    set SetupDone                            0

    return
    }

proc act_Setup { } {
    global params
    set params(interruptPrompt) true
    set params(dialPlan) true

    puts "\n---- in act_Setup \n"
    init_perCallVars
    leg setupack leg_incoming
#    infotag set med_language prefix "ru"
#    SelectLanguageMenu
    media play leg_incoming flash:ru_welcome.au
    puts "\n---- playing welcome.au \n"
    leg collectdigits leg_incoming params
    fsm setstate GETDEST
    return
    }

proc act_GotDestination { } {
    global NumSedtPrompt

    puts "\n---- in  act_GotDestination\n"    
    set status [infotag get evt_status]
        puts "\n---- act_GotDestination status: $status \n"    

    # Вот здесь, внутренный набран правильно, уходим на него
    if {$status == "cd_004"} {
    set dest [infotag get evt_dcdigits]
    leg setup $dest callInfo leg_incoming
        }

    # Тут, тайм аут, ничего не набрали...
    if {$status == "cd_001"} {
    set dest [infotag get evt_dcdigits]
    leg setup 111 callInfo leg_incoming
        }

    # Набрали, но номера не существует...
    if {$status == "cd_006"} {
    set dest [infotag get evt_dcdigits]
    leg setup 111 callInfo leg_incoming
        }

    return
    }

--- вот что добавил ---

    proc act_CallSetup { } {
    # Процедура установки звонка

        puts "\n proc act_CallSetup start"

        global PressedKey

        set PressedKey [infotag get evt_dcdigits]
        switch $PressedKey {
            "8" {
            leg setup 111 callInfo leg_incoming
            }
            "9" {
            leg setup 111 callInfo leg_incoming
            }
        }
        return
        }

set ivr_fsm(CALLCOMES,ev_setup_indication) "act_Setup        same_state"
set ivr_fsm(GETDEST,ev_collectdigits_done) "act_GotDestination        same_state"
set ivr_fsm(PLACECALL,ev_media_done)             "act_CallSetup same_state"
fsm define ivr_fsm CALLCOMES

Но эти изменения не ощущаются.. Как было так и есть...
Подскажите, плз...Что не так?
Спасибо!

  • Cisci IVR, !*! EL, 09:52 , 22-Дек-06 (1)
    >
    >proc act_GotDestination { } {
    > global NumSedtPrompt
    >
    > puts "\n---- in  act_GotDestination\n"
    > set status [infotag get evt_status]
    >        puts "\n---- act_GotDestination status:
    >$status \n"
    >
    > # Вот здесь, внутренный набран правильно, уходим на него
    > if {$status == "cd_004"} {
    > set dest [infotag get evt_dcdigits]


    switch -regexp $dest {
    {^8} {
         leg setup 111 callInfo leg_incoming
          }
    {^9}  {
          leg setup 111 callInfo leg_incoming
          }
    default {
    >      leg setup $dest callInfo leg_incoming
    >     }
    }
    }

    >
    > # Тут, тайм аут, ничего не набрали...
    > if {$status == "cd_001"} {
    > set dest [infotag get evt_dcdigits]
    > leg setup 111 callInfo leg_incoming
    >     }
    >
    > # Набрали, но номера не существует...
    > if {$status == "cd_006"} {
    > set dest [infotag get evt_dcdigits]
    > leg setup 111 callInfo leg_incoming
    >     }
    >
    > return
    > }
    >
    >set ivr_fsm(CALLCOMES,ev_setup_indication) "act_Setup  same_state"
    >set ivr_fsm(GETDEST,ev_collectdigits_done) "act_GotDestination  same_state"
    >set ivr_fsm(PLACECALL,ev_media_done)          
    >  "act_CallSetup same_state"
    >fsm define ivr_fsm CALLCOMES
    >
    >Но эти изменения не ощущаются.. Как было так и есть...
    >Подскажите, плз...Что не так?
    >Спасибо!

    И не будет - если интересно почему - man
    А нет - добавь приблизительно то что выше

    • Cisci IVR, !*! EL, 10:12 , 22-Дек-06 (2)
      А по хороошему надо что-то типа етого:

      proc act_GotDestination { } {
        set status [infotag get evt_status]
        
        if {$status == "cd_004"} {
            set dest [infotag get evt_dcdigits]

            switch -regexp $dest {
               {^8} { set dest 111 }
               {^9} { set dest 111 }
            }
         } else {
            set dest 111
         }
         leg setup $dest callinfo leg_incoming
         return
      }


      • Cisci IVR, !*! Cisci IVR, 10:59 , 22-Дек-06 (3)
        >А по хороошему надо что-то типа етого:
        >
        >proc act_GotDestination { } {
        >  set status [infotag get evt_status]
        >
        >  if {$status == "cd_004"} {
        >      set dest [infotag get evt_dcdigits]
        >
        >      switch -regexp $dest {
        >         {^8} { set
        >dest 111 }
        >         {^9} { set
        >dest 111 }
        >      }
        >   } else {
        >      set dest 111
        >   }
        >   leg setup $dest callinfo leg_incoming
        >   return
        >}

        Пасибо, супер!




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру