アスタリスク+ Lua-IVRおよびその他のポイント

こんにちは! IVR-今日では、チップではなく、企業の特定の標準です。 場合によっては、多くの顧客と競合他社の両方が、このIVRが存在しない場合、提供されるサービスの質が「低い」と考えています。 これで誰も驚かないでしょう。 ただし、アスタリスクの下でのlua言語でのIVRの実装について話しているところです。 また、通常のダイヤルプランからLuaに移行する場合は、明確にする必要があります。





メニューに必要なファイルが既にあり、それらが適切なフォルダーにあるとします。 古い設定でも使用されていた可能性があります。 次に、Luaの音声メニューを説明するとき、次のようにします(私はしました)。



ファイルの先頭のどこかにファイルプレートを記述します。 必要に応じて、すべてを1か所で変更すると便利です。



mhold = { m_hello = "custom/message_01"; --  m_menu = "custom/message_02"; --   m_thx = "custom/message_05"; --     ... good_day = "custom/wav_gd_2"; --  "  "... comerc = "custom/com_1"; --   - 1 live = "custom/live_2"; --   ..     . other = "custom/other_3"; }
      
      







したがって、ネームプレートで使用されるファイルを示すフィールドについて説明しました。 私の場合-あいさつ文、感謝の言葉、メニュー選択のあるファイル。 また、バックアップ(念のため)オプションがあり、各メニューは独自のファイルに分割されていました...



さらに、最初の記事で、私は着信呼び出しの説明で、関数foo()で呼び出しivr()を示しました。 したがって、実際には私の例では次のように機能しました。

イベント-着信。 foo()を呼び出します。 いくつかの条件の確認->挨拶の再生-> ivr()の呼び出し。 ivr()を呼び出す前にグリーティングを再生しました。



 function ivr(d) app.noop("  .") app.noop("DID: "..d) app.background(mhold.m_menu,"","","menu") app.waitexten(3) return end
      
      







それほど派手な機能ではありません。 ここのapp.backgroundは、アスタリスク音声メニューのコアからの呼び出しです。 ただし、同時に、拡張機能でメニューイベントの説明を作成する必要もあります。



 menu = { ["1"] = function(c,e) app.noop("Calling from menu by 1") app.playback(mhold.m_thx) CallSKS() --     end; ["2"] = function(c,e) app.noop("Calling from menu by 2") app.playback(mhold.m_thx) app.goto("local_ext","4690",1) --        . end; ["3"] = function(c,e) app.noop("Calling from menu by 3") app.playback(mhold.m_thx) app.goto("local_ext","4579",1) end; ["4"] = function(c,e) app.noop("Calling from menu by 4") app.playback(mhold.m_thx) CallSKS() --      . end; };
      
      







同時に、from_trunkの着信呼び出しの説明では、タイムアウト処理を追加する必要があります。そうしないと、必要な時間内にクライアントが選択を行わなかった場合、クライアントは短いビープ音を聞き、アスターコンソールにコード実行エラーが表示されます。



 from_trunk = { t = function() app.playback(mhold.m_thx) app.goto("local_ext","7090",1) end; --     ...
      
      







すべてはIVRに関係しているようです。 もう1つ、呼び出し時間の制限があります。 はい、残念ながらこれをしなければなりませんでした。 会社には別々のショットがありましたが、長距離で数十分間、そして1か月間-友人、ガールフレンド、兄弟などと何時間もチャットしていました。 もちろん、そのような人々はルーブルで罰せられましたが、リーダーシップの位置は仕事で働くことが必要であるほどでした。 彼らは時間内に話者を制限するように頼んだ。 次の例は、方向サンプリングを使用して、これをグローバルに実行する方法を示しています(おそらく最良のオプションではありません)。



 -- -   trunk_test if string.len(num) > 7 and not string.find(string.sub(num,1,4),"8383",1) then app.noop("     10 !!!") app.dial(string.format("%s%s,60,tTL(600000:480000:60000)",trunk.startel,num)) else app.noop("  .") app.dial(string.format("%s%s,60,tT",trunk.startel,num)) end
      
      







この場合、ダイヤル番号の文字数で選択しました。 文字数が市の文字数を超えて、市のコードを除いている場合、これは長距離電話です。 セルラーローカルのものは個別に処理されるため、この規則の対象にはなりません(DEFコードに関する前回の記事)。 しかし、細胞間-ヒット。 私の例では、10分の制限があります。 7分(または8分)すると、発信者に軽いビープ音が聞こえます。 この機能では、特定の「悪役」のみの処理を追加できます。 これらの悪人はできますか

テーブルに入れて、それをすでに調べますが、そこからデータをmysqlデータベースにプルすることができ、誰にとっても便利です...



それだけです さようならみんな!



All Articles