オーディオコード+ Lync 2013 + History-infoをサポートしないプロバイダー

Lync 2013実装プロジェクトに取り組んでいるときに、自動転送と同時呼び出しに関連する問題に遭遇しました。 テストグループは、コール転送が機能しないと苦情を言いました。

トラブルシューティングにより、この問題は特定のシナリオに存在することが明らかになりました。 問題は、クライアントに提供される番号のプールに発信者番号が含まれていない場合、プロバイダーが発信呼び出しをルーティングしないことです。

この問題の詳細な説明と解決策については、詳しく説明しません。

問題の説明


Lyncインフラストラクチャをテレフォニーにドッキングするスキーム:



ダイアグラムは示します


次の図は、可能なコール転送シナリオを示しています。


凡例


シナリオ#3では、発信者番号「E1」が組織に登録されていないため、プロバイダーは組織からの発信通話を「切断」します。 良好な場合、プロバイダーは適切なルートで通話を行い、History-infoフィールドに従って課金システムに入力する必要があります。 しかし、この場合、プロバイダーはHISTORY-INFOフィールドを受け入れません。プロバイダーの課金システムの作業は、FROM、TO属性のみに基づいて構築されます。

次のSIP Invite要求は、AudiocodesのLync Mediationから受信されます。

FROM: <sip:"E1";phone-context=enterprise@domain.net;user=phone>;epid=7B11BD1265;tag=8c9e1f2146 TO: <sip"E2"@voice_gw.domain.net;user=phone>CSEQ: 329 INVITE HISTORY-INFO: <sip:"L1"@lyncmediation1.domain.net;user=phone>;index=1;ms-retarget-reason=forwarding,<sip:"E2"@lyncmediation1.domain.net;user=phone>;index=1.1 


問題の声明


ソリューションオプション
  1. リサイクルプロバイダーの課金システム。
  2. 特別なプレフィックスを付けてルートを作成し、そのルートで「発信者IDを隠す」パラメーターを有効にして、「代替発信者ID」を設定します。 プレフィックスが割り当てられた転送番号を入力するようユーザーに促します。



  3. ここで説明されているように、SIPメッセージ操作ルール機能を使用します。 (同様のソリューションがベンダーサポートによって提案されました)。


最初のオプションは試されさえしませんでした。

2番目と3番目のオプションでは、プラスよりもマイナスが多くなります。 スクリプト#3は修正されていますが、同時にスクリプト#1、2、4では便利な機能が失われています。転送されたすべてのコールは、コール転送がアクティブになっている番号から発信されます。

3番目のオプションを使用して決定しました。

「E1」および「E2」が外部番号であるメッセージの場合、メッセージ操作ルールを使用して、FROMフィールドの値をsip:「E1」からsip「L1」に置き換える必要があります。

他のシナリオでは、機能の損失につながるため、このルールを適用しないでください。 リダイレクトされたコールを受信する加入者には、発信者の実際の発信者IDは表示されません。

置換ルールの呼び出し番号のアクティブ化テーブル
から転送先(履歴情報)IsRuleNeedToBeApplied
1内部インターナ
2外部内部
3外部外部TRUE
4内部外部

表の説明


解決策


構成
  1. xxxx / AdminPageでINIパラメーターページを開きます。 SetID SetID。このためには、パラメータ名フィールドにGWINBOUNDMANIPULATIONSETと入力し、値を入力フィールドに対応するSetID番号を入力します。



  2. VOIP> SIP Defenitions> Message Manipulationsで次の表に説明されているルールを作成します。




ルール表
IndxIDメッセージタイプ状態アクトゥビActType行為価値ロウレ
11誘うheader.history-info正規表現(sip:\ + 7(717212 ....)@)var.call.src.0修正する2ドル0
21誘うheader.to regex(sip :(?!717212)(。*)@)var.global.0修正する「1」0
31誘うheader.from regex(sip :(?!717212)(。*)@)header.from.url.user修正するvar.call.src.00

ルール番号1は、HISTORY-INFOヘッダーがあるかどうかを確認し、内線番号テンプレートに対応するグループを形成し、このグループをvar.call.src.0変数に書き込みます。 この変数は、ヘッダーheader.from.url.userの発信者番号を置き換えるために3番目のルールで使用されます。

ルール番号2は、外部番号のTOヘッダーをチェックします。 正規表現関数「Negative lookahead」が使用され、プレフィックス717212によってローカル番号が除外されます。肯定的な結果の場合、変数var.global.0が書き込まれます。 この変数には何の役割もありません。

ルール3は、外部番号のFROMヘッダーをチェックします。 プレフィックス717212でローカル番号を除外する正規表現関数「負の先読み」が使用されます。肯定的な結果の場合、ステップ1で記録された変数var.call.src.0がヘッダーheader.from.url.userの着信番号を置き換えるために使用されます。

結果


シナリオ3では、発信者番号が転送の開始者の番号に変更されます。
他のシナリオでは、発信者番号は変更されません。

付録1.構成リスト


 GWINBOUNDMANIPULATIONSET = 1 [ MessageManipulations ] FORMAT MessageManipulations_Index = MessageManipulations_ManSetID, MessageManipulations_MessageType, MessageManipulations_Condition, MessageManipulations_ActionSubject, MessageManipulations_ActionType, MessageManipulations_ActionValue, MessageManipulations_RowRole; MessageManipulations 1 = 1, "invite", "header.history-info regex (sip:\+7(717212....)@)", "var.call.src.0", 2, "$2", 0; MessageManipulations 2 = 1, "invite", "header.to regex (sip:(?!717212)(.*)@)", "var.global.0", 2, "'1'", 0; MessageManipulations 3 = 1, "invite", "header.from regex (sip:(?!717212)(.*)@)", "header.from.url.user", 2, "var.call.src.0", 0; [ \MessageManipulations ] 


付録2.有用なリソース


  1. クイックリフレクションガイド。 SIPメッセージ操作
  2. Regexr.com正規表現を学習、構築、テストするためのオンラインツール

Source: https://habr.com/ru/post/J249711/


All Articles