Splunk On-CallのTwilioライブコールルーティングインテグレーション 🔗
Splunk On-CallとTwilioのインテグレーションは、ライブコールルーティングとアラートシステムを作成します。例えば、アラートが開始されると、オンコール担当者やチームに電話が発信されます。
対応者が電話に出ると、電話会議が自動的に開始され、インシデントはSplunk On-Callで」確認」とマークされ、電話会議の詳細が注記されます。通話が完了すると、通話に関する追加情報が記載された」Recovery」アラートがSplunk On-Callに送信され、インシデントは」Resolved」とマークされます。アラートがエスカレーションポリシーを通じて自動的にルーティングされ、誰も電話に出ない場合、発信者はボイスメールを残すことができ、このボイスメールは書き起こされてクリティカルインシデントとしてSplunk On-Callのタイムラインに送信されます。
Splunk On-CallとTwilioのライブコールルーティングにより、電話の呼び出しによるオンコールアラートと共同インシデント対応のインテグレーションシステムが構築されます。オンコール対応者や部門横断チームは、Splunk On-CallとTwilioのインテグレーションを利用して、リアルタイムでアラートを共有し、重要なインシデントを迅速に修復することができます。
Splunk On-Callでライブコールルーティング用の単一の電話番号を作成し、報告されたインシデントに複数のチームとエスカレーションポリシーを接続します。
インシデント対応ワークフローの多くを自動化するために、オンコール・スケジュールとアラートルーティング、エスカレーション、コールルーティングを統合します。
通話情報、アラートデータ、チャット履歴などの過去のインシデント詳細を一元化されたタイムラインで追跡し、インシデント発生後のレビューを改善します。
Splunk On-CallとTwilioのインテグレーションにより、複数のチャネルやチームでリアルタイムにコラボレーションできます。
要件 🔗
このインテグレーションは以下のバージョンのSplunk On-Callと互換性があります:
Starter
Growth
エンタープライズ
Twilioアカウントの試用版では、インテグレーションによって発信される可能性のあるすべての電話番号を確認する必要があります。電話番号を確認したり、Twilioの電話番号を購入したりする前に、このインテグレーションが正常に機能するかどうかを確認するには、Splunkサポートにお問い合わせください。
Splunk On-CallでTwilioを有効にする 🔗
ライブコールルーティングインテグレーションのセットアップを完了するために必要なSplunk On-Callアイテムがいくつかあります。
TwilioサービスAPIキー 🔗
TwilioサービスAPIキーを見つけるには、Splunk On-CallのIntegrationsページに移動し、Twilio Live Call Routingを検索するか、アイコンが見つかるまで下にスクロールします。
インテグレーションをオンにしていない場合は、インテグレーションをオンにし、サービスAPIキーをクリップボードにコピーします。
Splunk On-Call API IDとAPIキー 🔗
この設定を完了するには、Splunk On-Call API IDとAPIキーが必要です。Twilioスクリプトは、Splunk On-Callのドキュメント化されたAPIコールのいくつかを使用して、連絡を取ろうとしているオンコールユーザーの連絡先情報を取得します。
API IDとキーを確認するには、インテグレーションページページに戻り、APIタブを選択します。APIをアクティベートしていない場合は、API IDとAPIキーをクリップボードにコピーしてください。
Splunk On-Callチーム名とエスカレーションポリシー名 🔗
これは、通知するSplunk On-Callチーム名と関連するエスカレーションポリシーです。これを取得するには、Splunk On-Callポータルにアクセスし、Teams を選択します。このインテグレーションに使用するチーム名をコピーします。
エスカレーションポリシー名を取得するには、目的のチームを選択し、Escalation Policies タブを選択します。使用したいエスカレーションポリシーの名前をコピーします。
ライブコールルーティングインテグレーションを使用して、複数のチームやエスカレーションポリシーに通知することができます。複数のチームまたはエスカレーションポリシーを設定に追加したい場合は、通知を受けたいすべてのチームとエスカレーションポリシーに対してこの手順を繰り返します。
エスカレーションポリシーの考慮事項 🔗
指定されたエスカレーションポリシーのステップで複数の人が勤務中の場合、ランダムに選ばれた1人の当番ユーザーのみがそのステップで呼び出されます。その後、インテグレーションは次に指定されたエスカレーションポリシーのステップから誰かを呼び出します。
このインテグレーションでは、最大3人のユーザーを呼び出すことができるため、エスカレーションポリシーのステップの1つに勤務中の人がいない場合を除き、指定されたエスカレーションポリシーの最初の3つのステップのみが使用されます。
インテグレーションは、各エスカレーションポリシーステップ間に設定された時間遅延を無視します。たとえば、ステップ1がすぐに発生し、15分後にステップ2が発生するように設定されている場合、発信者はステップ2のユーザーが呼び出されるまで15分待つ必要はありません。システムはステップの区切りを探し、その順番でユーザーを呼び出します。
エスカレーションポリシーのステップの1つが「ポリシーを実行する」である場合、呼び出されたポリシーは実行されません。ローテーションまたはユーザーを呼び出すポリシーステップのみが実行されます。
ルーティングキー 🔗
Twilioインテグレーションによって作成されたインシデントをSplunk On-Callの適切なチームにルーティングするには、特定のルーティングキーを作成する必要があります。インテグレーションに使用するチームとエスカレーションポリシーを選択したら、Splunk On-CallからURLフレンドリーなチームスラグをコピーします。
次に、Settings、Routing Keys の順に移動して、そのチームに関連付けられたURLフレンドリーなチームスラグで新しいルーティングキーを作成します。コピーしたスラグをルーティングキーフィールドに貼り付け、エスカレーションポリシーフィールドで関連付けるチームとエスカレーションポリシーを選択します。
これにより、すべてのインシデントが正しいエスカレーションポリシーに送られることが保証されます。
注釈
マルチチーム電話ツリーまたは複数の電話番号を異なるチームにルーティングするセットアップのいずれかを使用している場合は、インテグレーションによって指定されたすべてのチームに対してこの手順を繰り返す必要があるため、複数のルーティングキーが作成されます。
TwilioでSplunk On-Callを統合する 🔗
残りの設定はTwilioで行います。このインテグレーションには、TwilioアカウントとTwilio電話番号が必要です。
Twilioでアカウントを作成したら、左側のメニューバーに3つの項目をピン留めします。Twilioのメインコンソールから、左側の Develop タブの下にある Explore Products` を選択します。
Programmable Communications でVoiceアプリを探し、タイルの右上にあるピンアイコンを選択します。これでアプリがサイドバーに固定され、後で簡単にアクセスできるようになります。
このプロセスを繰り返して、電話番号アプリと機能アプリをピン留めします。
Twilio電話番号の取得 🔗
メインコンソールのダッシュボードから「電話番号」を選択し、Manage を選択します。次に、まだの場合は Buy a Number を選択し、Capabilities を に設定します。Search を選択します。
ニーズに最も適した番号を見つけたら、その番号に Buy を選択します。
Twilio Voice 🔗
ライブコールルーティングで使用されるいくつかの機能をオンにするには、Enhanced Programmable SIP機能を有効にする必要があります。
これを行うには、Voice、Settings、General の順に移動します。Enhanced Programmable SIP Features が表示されるまで、ページの一番下にスクロールしてください。Disabled を選択して機能をオンにし、保存します。
Twilio Functions 🔗
このインテグレーションはTwilioの関数を使用しています。
TwilioコンソールからFunctions機能に移動するには、メニューから Runtime を選択します。次に Functions を選択し、Create Service を選択します。
サービス名を Splunk On-Call-Live-Call-Routing
とし、Next を選択します。次の画面で、Add + を選択し、Add Function を選択します。
関数のパス名を /victorops-live-call-routing
とします。クリックすると、Twilioによって生成されたデフォルトのコードが表示されます。
関数のコード 🔗
Twilioが提供するデフォルトコードをハイライトし、削除します。コピーしたいコードを以下のリンクから探し、そこに貼り付けます:
https://github.com/victorops/twilio-live-call-routing/blob/master/Splunk-On-Call-Twilio
コードを関数に貼り付けて保存します。
環境変数を設定する 🔗
関数を保存したら、いくつかの変数を設定する必要があります。画面下部の Settings で、Environment Variables を選択します。
Add my Twilio Credentials (ACCOUNT_SID) と (AUTH_TOKEN) to ENV がチェックされていることを確認します。
スクリーンショットに示す環境変数を追加します。TEAM_1
と ESC_POL_1
の値は大文字小文字を区別し、Splunk On-Callのスペルと大文字小文字を正確に一致させる必要があることに注意してください。
Key 列の入力は以下の通りです:
EAM_1
ESC_POL_1
NUMBER_OF_MENUS
VICTOROPS_API_ID
VICTOROPS_API_KEY
VICTOROPS_TWILIO_SERVICE_API_KEY
依存関係を設定する 🔗
同じセクションで Dependencies を選択します。メニューで選択されているNode VersionがNode v16であることを確認してください。次に、環境変数の入力と同様に、モジュールとバージョンを以下のスクリーンショットと一致するように入力します。
モジュールとバージョンのリストは以下のとおりです:
xmldom
:0.1.27
lodash
:4.17.10
fs
:0.0.1-security
twilio
:3.6.3
got
:9.6.0
util
:0.11.0
注釈
これらの手順を完了したら、Deploy All を選択します。これにより、関数、環境変数、依存関係が公開され、インテグレーションが動作するために必要となります。
電話番号に機能を追加する 🔗
Twilioの最後のステップは、このインテグレーションに使用する予定の電話番号に機能を追加することです。左側のTwilioメニューから、Phone Numbers を選択し、使用する電話番号を選択します。
Voice and Fax セクションで、A CALL COMES IN を Function に設定します。サービスとして Splunk On-Call-Live-Call-Routing を、環境として ui を、関数パスとして victorops-live-call-routing
を選択します。
これらの変更を保存すると、TwilioはFunctionをWebhookに変更します。名前は異なりますが、これらは同じように動作し、インテグレーションの機能には影響しません。
これで標準的なセットアップは完了しました。
オプションのコンフィギュレーション設定 🔗
オプションのコンフィギュレーション設定が数多く用意されています。それぞれについて、前のセクションで説明した標準セットアップに従った後、実施したいコンフィギュレーション設定を行ってください。
マルチチーム電話ツリー 🔗
電話ツリーを追加するには、追加の環境変数が必要です。電話ツリーに追加するチームごとに、TEAM_2
、TEAM_3
、…とキーボックスに入力します。次に、対応するエスカレーションポリシーを、ESC_POL_2
、ESC_POL_3
などのキーで入力し、値ボックスにエスカレーションポリシーの名前を指定します。
また、NUMBER_OF_MENUS
という変数を設定し、それを 1
または 2
に設定する必要があります。これを 1
に設定すると、オペレータは Press 1 for <Team 1>
、Press 2 for <Team 2>
を読み上げることになります。これを 2
に設定すると、利用可能なチーム名を読み上げる前に、初期オプションの Please press 1 to reach an On-Call representative or press 2 to leave a message
になります。
注釈
チームは電話ツリーからアルファベットの逆順に降順に読み上げられます。つまり、「A」で始まるチームは、「TEAM_1」「TEAM_2」などにどのように入力されていても、必ず「Z」で始まるチームの後に読み上げられます。
最終結果は以下のスクリーンショットのようになります:
この機能に追加された各チームは、ルーティングキーのステップで作成された一意のルーティングキーに対応します。
これらの環境変数を追加したら、Deploy All を選択します。
異なるチームにルーティングする複数の電話番号 🔗
電話ツリーの代わりに、指定した電話番号を異なるSplunk On-Callチームにルーティングしたい場合は、標準のセットアップに加えていくつかの追加ステップが必要です。Twilioの電話番号を追加で購入し、新しいServiceとFunction (マッチする環境変数と依存関係)を作成し、新しい電話番号に ServiceとFunctionを割り当てる必要があります。
Twilio電話番号を追加購入するには、「Twilio電話番号の取得」セクションで指定された手順に従ってください。
次に、新しいサービスと機能を作成します。「電話番号に機能を追加する」からTwilio Functionsの手順を繰り返し、今回はこの電話番号に電話するチームとエスカレーションポリシーを指定します。新しいサービスには、最初のサービスとは少し異なる名前を付けます。
ルーティングキー 🔗
設定の最後の部分はSplunk On-Callで行われます。詳細な手順については、ルーティングキーのセクションを参照してください。
通話機能なし 🔗
このインテグレーションのライブコール機能で、電話をかけてきた人にすぐにボイスメールを残すように促す代わりに、電話をかけてきた人をオンコール担当者にライブで接続しようとするのを防ぎたい場合は、追加の環境変数が必要です。
Twilioで、Develop、Functions、Services に移動し、以前に作成したサービスを見つけます。次に、画面下部の Environment Variables を選択し、新しい環境変数を追加します。キーを NO_CALL
に、値を TRUE
に設定します。
これが追加されたら、Deploy All を選択して変更をプッシュします。
ボイスメール機能なし 🔗
オンコール担当者が電話に出なかった場合、ボイスメールを残すことができないようにし、代わりにインシデントが作成され、間もなく折り返し電話がかかってくることを通知したい場合は、追加の環境変数が必要です。
Twilioで、Develop、Functions、Services に移動し、以前に作成したサービスを見つけます。次に、画面下部の Environment Variables を選択し、新しい環境変数を追加します。キーを NO_VOICEMAIL
に、値を TRUE
に設定します。
これが追加されたら、Deploy All を選択して変更をプッシュします。
静的メールアドレスにメールで送信されたボイスメールの書き起こしと録音URL 🔗
録音URLとボイスメールの書き起こしを静的なメールアドレスにメールで送信するには、SendGridアカウントが必要です。
SendGridで、Settings、API Keys、Create API Key を選択します。APIキーに名前を付け、Full Access を選択し、Create & View を選択します。APIキーの値をコピーし、安全な場所に保存します。残りの設定はTwilioで行います。
Develop、Functions、Services、Splunk On-Call-Live-Call-Routing で作成したTwilio関数に移動します。Environment Variables を選択します。
TwilioアカウントとSendGridアカウントを接続し、このメール送信機能を実現するために、4つの新しい環境変数を追加する必要があります。Key
列の入力は以下の通りです:
SENDGRID_API_SECRET
: SendGridから以前にコピーしたAPIキーFROM_EMAIL_ADDRESS
: SendGridで検証済みのメールアドレスTO_EMAIL_ADDRESS
: メールを送信する静的メールアドレスVM_EMAIL
:TRUE
に設定します
SENDGRID_API_SECRET
値はSendGridで以前にコピーしたAPIキー、TO_EMAIL_ADDRESS
はメールを送信したいメールアドレスです。
@sendgrid/mail 7.6.0
依存関係を追加するには、Dependencies を選択します。
これらの新しい環境変数と新しい依存関係を追加したら、Deploy All を選択します。これで、発信者がボイスメールを残すと、ボイスメールの書き起こしと録音のURLを含むメールが、指定した TO_EMAIL
に送信されます。
ボイスメールの書き起こし 🔗
文字起こしは、録音時間が2秒以上120秒未満のボイスメールに制限されています。これらの制限時間外の録音に対して書き起こしをリクエストした場合、Twilioは録音を書き起こすのではなく、デバッグログに警告を書き込みます。メッセージを書き起こせない場合、クリティカルインシデントがSplunk On-Callに投稿され、アラートペイロード内に Twilio was unable to transcribe message
のメモが表示されます。
ボイスメールを聞く 🔗
ボイスメールは書き起こされてSplunk On-Callのタイムラインに投稿されますが、実際のボイスメールを聞きたいというユーザーもいるでしょう。これはTwilioプラットフォームを使って行うことができ、注釈を使ってSplunk On-Callからリンクすることができます。
特定の通話の履歴にリンクバックし、ボイスメールを聴いたりダウンロードしたりするために、以下のルールエンジンルールを作成します。
monitoring_tool
が Twilio
と一致する場合、アラートに次の注釈をつけます:
ラベル:
Listen to Voicemail
URL:
https://www.twilio.com/console/voice/calls/logs/${{entity_id}}
リンクに移動する際、ユーザーはまずTwilioアカウントにサインインする必要があります。
TwilioとSplunk On-Callのトラブルシューティング 🔗
以下の一般的な問題と解決策を参照してください。
問題1: オンコール担当者が電話を受けない。
発信者には次のメッセージが聞こえます。「次のオンコール担当者を試しています、次のオンコール担当者を試しています、次のオンコール担当者を試しています…${Team}にメッセージを残し、終わったら電話をお切りください」
これは、トライアルTwilioアカウントが使用されているため(有料のTwilioアカウントとは異なります)、電話をかける前にTwilio内で電話番号を確認する必要があるためと考えられます。さらに、有料のTwilioアカウントを使用している場合でも、特定の国(スロバキアなど)の電話番号には、電話をかける前に電話番号を確認する必要があります。
「コンソールサイトを使用して確認済み発信者番号を追加する」セクションの手順に従って、通話先の番号を確認することができます。
問題2:設定値が欠落しています。管理者に連絡して問題を解決してください。
このメッセージは、Twilioの依存関係または環境変数のいずれかが正しく設定されていないことを表しています。
Twilioアカウント内のこれらの値が、推奨値と完全に一致していることを確認してください:
問題3:「あなたの組織のチームリストを取得する際にエラーが発生しました」
このメッセージは、通知しようとしているチームが存在しないか、正しく指定されていないか、VICTOROPS_API_KEY
または VICTOROPS_TWILIO_SERVICE_API_KEY
が正確にコピー&ペーストされていないことを表します。
Splunk On-Callのチームのスペル (大文字小文字を含む)がTwilio環境変数内で正確に一致していること、VICTOROPS_API_KEY
と VICTOROPS_TWILIO_SERVICE_API_KEY
に適切な値が設定されていることをダブルチェックしてください。
問題4:「オンコール電話番号の取得にエラーが発生しました。もう一度お試しください」
これは、電話をかけようとしている番号がSplunk On-Callでまだ確認されていないことを意味します。
ユーザーのSplunk On-Callパーソナルプロファイル内で、番号の横にある「検証」ボタンを選択して番号を確認し、デバイスに送信された確認コードを入力します。
問題5:「チーム${team-name}が存在しません。管理者に連絡して問題を解決してください」
これは、Twilioのチームのスペルや大文字小文字(「環境変数」の「値」列)が、Splunk On-Callのチームのスペルや大文字小文字と完全に一致していない可能性があることを示しています。
これを再確認し、必要であれば修正します。
問題6:コールされようとしているユーザーがコールを受信しません。インテグレーションは、エスカレーションポリシーで指定された次のユーザーの呼び出しにスキップします。
この状況は、電話を受信しなかったユーザーのSplunk On-Callプロファイルに確認済みの番号が入力されていない場合に発生する可能性があります。このユーザーの番号を入力してから、もう一度試してください。
問題7:インテグレーションは、ボイスメールを残すように発信者に促す前に、3人のユーザーにしか電話をかけません。
これはインテグレーションの固有の制限であり、調整することはできません。
問題8:あるエスカレーションポリシーのステップに複数の勤務中の人がいますが、そのうちの1人しか電話を受けません。
これもインテグレーション固有の制限であり、調整することはできません。 特定のエスカレーションポリシーステップで複数の人が同時に勤務している場合、インテグレーションは、コールが発信されるたびにランダムに1人のユーザーを選択し、コールをルーティングします。
問題9:誰にも電話がかけられません。発信者はメッセージを残すように促されます。
これはTwilioの環境変数の値とSplunk On-Callの対応する値の不一致が原因である可能性があります。Twilioのチームとエスカレーションポリシーのスペルが、Splunk On-Callで使用されているものと完全に一致していることを確認してください。
問題10:「オンコール担当者と連絡が取れませんでした」
このメッセージは、通知されようとしているチームが存在しないか、適切に指定されていないことを意味します。
Splunk On-Callのチームのスペル(大文字小文字を含む)が、Twilio環境変数内で正確に一致していることを再度確認してください。
これは、トライアルTwilioアカウントが使用されているため(有料のTwilioアカウントとは異なります)、電話をかける前にTwilio内で電話番号を確認する必要があるためと考えられます。さらに、有料のTwilioアカウントを使用している場合でも、特定の国(スロバキアなど)の電話番号には、電話をかける前に番号を確認する必要があります。
「コンソールサイトを使用して確認済み発信者番号を追加する」セクションの手順に従って、通話先の番号を確認することができます。
問題11:「アプリケーションエラーが発生しました。さようなら」、またはTwilioのログに82002と11200のエラーが表示されます。
これは、Splunk On-Call関数内で使用されているコードが適切にコピー&ペーストされていない、パスが適切に指定されていない、依存関係がすべてコピーオーバーされていない (多くの場合 『got’モジュール)、環境変数にタイプミスがある、定義されたエスカレーションポリシーが「ポリシーを実行する」ステップを参照している、または呼び出されようとしているSplunk On-Callユーザーのユーザープロファイルに番号がないことを示しています。これらの領域を確認してください。
問題12:Splunk On-Callユーザーのプロファイルに複数の電話番号が設定されており、間違った電話番号がインテグレーションによって呼び出されます。
Splunk On-Callユーザープロファイルに最も長く登録されている電話番号が、インテグレーションで使用される電話番号になります。通話させたくない電話番号を削除し、再度追加することで、通話させたい電話番号が最も古くなります。
問題13: 「おかけになった電話番号は現在使われておりません。番号をお確かめの上、おかけ直しください」
このメッセージは、Twilioの電話番号に機能が正しく割り当てられていない可能性があります。電話がかかってきたときにSplunk On-Call機能を実行するように電話番号が設定されていることを確認してください。
問題14:機能 >> 設定ページで「保存」を選択した後、」Failed to deploy your Function」というメッセージが表示されます。
Twilioの「設定」ページ(「環境変数」と「依存関係」が表示されているページ)で保存しようとしたときに、このエラーメッセージが表示された場合、』got’依存関係の許容値が最近変更されたことが原因である可能性があります。以前は、』got’依存関係のバージョンは空白のままにしておくことを推奨していましたが、』got’のv10パッケージへの最近の変更に伴い、このバージョンを9.6.0と指定する必要があります。すべての依存関係が上記の「環境変数の設定」セクションのスクリーンショット/表と一致していることを確認し、保存を再試行してください。
問題15:TwilioのFunctions >> Configureセクションで指定したチームではなく、一見ランダムなチームがインテグレーションによって呼び出されます。
これは、Twilio関数で使用されているコードが、ユーザーのユースケースを想定したものではないことが原因である可能性があります。標準の単一電話番号設定を行う場合は、Functions >> Manage >> Splunk On-Call 内の既存のコードを削除し、https://github.com/victorops/twilio-live-call-routing/blob/master/victorops-twilio.jsにあるコードに置き換えてください。
注釈
Splunk On-Call内のエスカレーションポリシーでは、ライブコールルーティングはローテーションまたはエスカレーションポリシーで直接参照されるユーザーまたはローテーションにのみ電話をかけます。ライブコールルーティングは、別のエスカレーションポリシーを実行するステップを認識せず、そのステップをスキップしてすぐに次のステップに進みます。