Splunk On-CallのTwilioライブコールルーティングインテグレーション 🔗
Splunk On-Call (旧VictorOps)とTwilioのインテグレーションは、ライブコールルーティングとアラートシステムを作成し、DevOpsとITオペレーションチームのMTTAとMTTRを改善します。
Splunk On-CallとTwilioのライブコールルーティングにより、電話によるオンコールアラートと共同インシデント対応のインテグレーションシステムが構築されます。オンコール対応者や部門横断チームは、Splunk On-CallとTwilioのインテグレーションを利用して、リアルタイムでアラートを共有し、重要なインシデントを迅速に修復することができます。
例えば、アラートが開始されると、オンコール担当者またはチームが呼び出されます。応答者が応答すると、電話会議が自動的に開始され、インシデントはSplunk On-Callで確認済みとしてマークされ、電話会議の詳細が注釈として付けられます。通話が完了すると、通話に関する追加情報が記載されたリカバリアラートがSplunk On-Callに送信され、インシデントは解決済みとしてマークされます。
アラートがエスカレーションポリシーを通じてルーティングされ、誰も電話に出ない場合、発信者はボイスメールを残すことができ、そのボイスメールは書き起こされてクリティカルインシデントとしてSplunk On-Callタイムラインに送信されます。
ライブコールルーティングと統合されたオンコールアラートにより、迅速なインシデント解決を実現する方法 🔗
Splunk On-Callでライブコールルーティング用の単一の電話番号を作成し、報告されたインシデントに複数のチームまたはエスカレーションポリシーを接続します
インシデント対応ワークフローの大部分を自動化するために、オンコール・スケジュールとアラートルーティング、エスカレーション、コールルーティングを統合します
通話情報、アラートデータ、チャット履歴など、過去のインシデント詳細を一元化されたタイムラインで追跡し、インシデント発生後のレビューを改善します
Splunk On-CallとTwilioのインテグレーションにより、複数のチャネルやチーム間でリアルタイムの協力が可能になります
要件 🔗
Twilioアカウント
Splunk On-Callバージョン:はじめに、Growth、またはエンタープライズ
現時点では、試用版Twilioアカウントでは、インテグレーションが最終的に電話をかける可能性のあるすべての電話番号が必要です。すべてのSplunk On-Call VictorOpsユーザーの電話番号の確認手順に従ってください。Twilioドキュメントで「Twilioで認証済みの電話番号または発信者IDを追加および削除する方法」を検索してください。電話番号の検証やTwilio電話番号の購入の前に、このインテグレーションがどのように機能するかを確認するには、Splunk On-Callサポートにお問い合わせください。
Twilioインテグレーションの概要 🔗
1つの電話番号を使用してオンコールチームに電話をかけ、そのチームのオンコールユーザーに直接接続します。オンコールユーザーが応答しない場合、誰かが応答するまでエスカレーションポリシーを通じて通話がエスカレーションされます(最大3人のコールユーザーまで)。誰かが応答すると、承認アラートがSplunk On-Callに送信され、インシデントが開かれます。このアラートには、誰が電話しているのか、誰が通知されたのかという情報が含まれます。通話が完了すると、通話時間に関する追加情報を含む復旧アラートがSplunk On-Callに送信され、インシデントが解決されます。
電話がすべてのエスカレーションステップを通過し、誰も応答しなかった場合、発信者はボイスメールを残すように促されます。そのボイスメールは書き起こされ、その電話を担当したチームにルーティングされる重要なメッセージとしてタイムラインに送信されます。
また、Splunk On-Callの複数のチームやエスカレーションポリシーに単一の番号を使用したい場合は、このプロセスの前に電話ツリーを追加するオプションがあり、また、別々のチームとエスカレーションポリシーをコールするために別の番号を設定するオプションもあります。以下のガイドでは、Splunk On-CallとTwilioの使用手順を説明します。
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とキーを見つけるには、Integrations、API の順に移動します。APIを有効にしてから、API ID と API Keys の1をコピーし、後で使えるように保存してください。
Splunk On-Callチーム名とエスカレーションポリシー名 🔗
これは、通知するSplunk On-Callチーム名と関連するエスカレーションポリシーです。これを取得するには、Splunk On-Callにアクセスし、Teams を選択します。このインテグレーションに使用するチーム名をコピーします。以下の例では、DevOps チームを使用しています。
エスカレーションポリシーの名前を取得するには、目的のチームを選択し、Escalation Policies タブに移動して、使用するエスカレーションポリシーの名前をコピーします。以下の例では、DevOpsチームの標準エスカレーションポリシーを使用します。
複数のチームとエスカレーションポリシーに通知できます。複数のチームまたはエスカレーションポリシーを設定に追加する場合は、通知するすべてのチームおよびエスカレーションポリシーに対してこの手順を繰り返します。
エスカレーションポリシーの注意事項 🔗
指定されたエスカレーションポリシーステップに複数の人がオンコールしている場合、そのステップで呼び出されるオンコールユーザーがランダムに1人選ばれます。インテグレーションは、次に指定されたエスカレーションポリシーステップの誰かを呼び出します。
このインテグレーションでは、最大3人のユーザーを呼び出すことができます。そのため、指定されたエスカレーションポリシーの最初の3ステップのみが使用されます。
インテグレーションは、各エスカレーションポリシーステップ間に設定された時間遅延を無視します。たとえば、ステップ1がすぐに発生し、15分後にステップ2が発生するように設定されている場合、発信者は、ステップ2のユーザーが呼び出されるまで15分待つ必要はありません。
エスカレーションポリシーのステップの1つがポリシーの実行である場合、呼び出されたポリシーは実行されません。ローテーションまたはユーザーを呼び出すポリシーステップのみが実行されます。
ルーティングキー 🔗
Twilioインテグレーションによって作成されたインシデントをSplunk On-Callの適切なチームにルーティングするには、ルーティングキーを作成します。インテグレーションに使用するチームとエスカレーションポリシーを選択したら、Splunk On-CallからURLフレンドリーなチームスラグをコピーします。次の画像は、DevOpsチームのチームスラグです。
注釈
2017年以降に作成されたチームのチームスラグは、以下のようなフォーマットになっています: team-35Rgt19gE35g3
。
次に Settings、Routing Keys の順に移動します。そのチームに関連するURLフレンドリーなチームスラグを持つ新しいルーティングキーを作成します。Routing Key` フィールドにスラグを貼り付け、Escalation Policies フィールドでチームとエスカレーションポリシーを選択します。
これにより、すべてのインシデントが正しいエスカレーションポリシーに送られるようになります。
注釈
マルチチーム電話ツリーまたは複数の電話番号を異なるチームにルーティングする設定を使用している場合は、インテグレーションによって指定されたすべてのチームに対してこの手順を繰り返し、複数のルーティングキーを作成する必要があります。
TwilioでSplunk On-Callを設定する 🔗
残りの設定はTwilioで行います。TwilioアカウントとTwilio電話番号が必要です。
Twilioアカウントで、3つの項目をメニューバーに固定します。Develop を選択し、次に Explore Products を選択します。
Programmable Communications にアクセスし、Voice を見つけます。ピンアイコンを選択して、アプリをサイドバーにピン留めします。
このプロセスを繰り返し、Super Network の下にある Phone Numbers アプリと、Developer Tools の下にある Functions (Beta) アプリをピン留めします。
Twilioの電話番号を取得する 🔗
Phone Numbers、Manage の順に移動します。
Buy a Number を選択します。
Capabilities を Voice に設定し、Search を選択します。
ニーズに最も適した番号を見つけ、Buy を選択してください。料金は月額1.00ドルです。
Twilio voice 🔗
ライブコールルーティングで使用されるいくつかの機能を有効にするには、Enhanced Programmable SIP Features を有効化する必要があります。
Voice、Settings、General の順に移動します。
Enhanced Programmable SIP Features までスクロールし、選択して有効化します。
Save を選択します。
Twilio関数を設定する 🔗
このインテグレーションはTwilio Functionsを使用します。https://www.twilio.com/docs/runtime/functions をご覧ください。
設定 🔗
Runtime、Functions の順に移動します。
Create Service を選択します。
サービス名を」VictorOps-Live-Call-Routing」とし、Next を選択します。
Add + を選択し、次に Add Function を選択します。
関数のパス名を」/victorops-live-call-routing」とします。
関数のデフォルトコードが表示されます。
関数コードを追加する 🔗
デフォルトコードを削除します。
以下のリンクからコードをコピーしてください: https://github.com/victorops/twilio-live-call-routing/blob/master/Splunk-On-Call-Twilio。
コピーしたコードを関数に貼り付けます。
Save を選択します。
環境変数を設定する 🔗
次に、いくつかの変数を設定する必要があります。
Settings を選択し、次に Environment Variables を選択します。
Add my Twilio Credentials (ACCOUNT_SID) and (AUTH_TOKEN) to ENV を選択します。
- すべての環境変数を任意の順序で追加します。
Splunk On-CallにあるAPI認証情報とTwilioサービスAPIキーを入力します。
TEAM_1 の場合は、Splunk On-Callアカウントからコピーしたチーム名を使用します。
ESC_POL_1 の場合は、対象のエスカレーションポリシーの名前を使用します。
NUMBER_OF_MENUS には、マルチチーム電話ツリーを希望しない場合は0を入力します(下記参照)。
以下のリストには、主な列の入力が含まれています:
TEAM_1
ESC_POL_1
NUMBER_OF_MENUS
VICTOROPS_API_ID
VICTOROPS_API_KEY
VICTOROPS_TWILIO_SERVICE_API_KEY
依存関係を設定する 🔗
関数の横に緑色のチェックマークが表示され、ログの下に「環境にデプロイされました」というメッセージが表示されます。関数がデプロイされるまで5~15秒かかります。
電話番号に機能を追加する 🔗
Twilioの最後のステップは、このインテグレーションに使用する予定の電話番号に機能を追加することです。
オプションのコンフィギュレーション設定 🔗
マルチチーム電話ツリー 🔗
電話ツリーを追加するには、環境変数を追加する必要があります。
電話ツリーに入れたいチームごとに、TEAM_2、TEAM_3、……と、Key フィールドに入力します。
対応するキーで、対応するエスカレーションポリシーを入力します。例えば、ESC_POL_2、ESC_POL_3* など。
Value フィールドにエスカレーションポリシー名を入力します。
- また、NUMBER_OF_MENUS 変数を入力し、1 または 2 に設定する必要があります。
メニュー変数の数が1に設定されている場合、オペレータは」<チーム1>は1を、<チーム2>は2を押してください 「と言います。
メニュー変数の数が2に設定されている場合、オペレータは「オンコール担当者と通話するには1を、メッセージを残すには2を押してください」と言い、その後に利用可能なチーム名を読み上げます。
注釈
チームの発表は降順に行われます。例えば、3チームある場合、まずTEAM_3が発表され、次にTEAM_2、TEAM_1の順に発表されます。
最終結果は以下の画像のようになります:
この機能に追加される各チームは、一意のルーティングキーに対応していなければなりません。Splunk On-Callでルーティングキーを作成する を参照してください。
異なるチームにルーティングする複数の電話番号 🔗
指定した電話番号を異なるSplunk On-Callチームに転送したい場合は、いくつかの追加手順が必要です。Twilioの電話番号を追加で購入し、マッチする環境変数と依存関係を持つ新しいサービスと関数を作成し、そのサービスと関数を新しい電話番号に割り当てる必要があります。
追加のTwilio番号を購入するには、Twilioの電話番号を取得する をご覧ください。
- 新しいサービスを作成し、以下の手順を繰り返します:
Twilio関数を設定します。Twilio関数を設定する を参照してください。
電話番号に機能を追加します。電話番号に機能を追加する を参照してください。
ボイスメールの書き起こし 🔗
文字起こしは、録音時間が2秒以上120秒未満のボイスメールに制限されています。これらの制限時間外の録音に対して書き起こしをリクエストした場合、Twilioは録音を書き起こすのではなく、デバッグログに警告を書き込みます。メッセージを書き起こせない場合でも、Splunk On-Callにクリティカルインシデントが投稿され、アラートペイロードに」Twilio was unable to transcribe message」というメモが表示されます。
ボイスメールを聞く 🔗
ボイスメールは書き起こされてSplunk On-Callのタイムラインに投稿されますが、実際のボイスメールを聞きたいユーザーもいるでしょう。Twilioプラットフォームでは、注釈 を使って、VictorOpsから簡単にリンクすることができます。
特定の通話履歴にリンクバックし、ボイスメールを聴取またはダウンロードするために、以下のルールエンジンルールを作成します。
monitoring_tool
がTwilio
と一致する場合URL
でアラートに注釈を付けるラベル:
Listen to Voicemail
URL:
https://www.twilio.com/console/voice/calls/logs/${{entity_id}}
リンクに移動する際、ユーザーはまずTwilioにサインインするよう促されます。
ボイスメール音声の設定 🔗
2020年5月7日以前にこのインテグレーションを設定した場合、Twilioが使用する音声のデフォルトは「女性」です。2020年5月7日以降、デフォルトの音声は「Polly.Salli」となり、コスト増となります。https://www.twilio.com/docs/voice/twiml/say/text-speech#pricing を参照してください。
Polly.Salliの声を使いたい場合は、以下の手順に従ってください:
VictorOps関数にアクセスします。TwilioのFunctions Classic UIで設定するか、新しいFunctions Services UIで設定するかによって、関数の場所は多少異なります。
TwilioのFunctions Classic UIでインテグレーションを設定する場合は、Functions 、Overview、Manage Services、VictorOps Live Call Routing、Functions の順に移動します。
Twilioの新しいサービスUIでインテグレーションを設定する場合は、Functions 、Services`、Manage Services、VictorOps-Live-Call-Routing、Functions の順に移動します。
関数のコードのおよそ82行目で、
'woman';
という行を探し、'Polly.Salli';
に置き換えます。およそ28行目で、次の行
greeting: 'Welcome to Victor Ops Live Call Routing.',
を見つけます語句
Live
をLyve
に変更し、最終結果が次のようになるようにします:greeting: 'Welcome to Victor Ops Lyve Call Routing.',
.およそ38行目に同等の編集を加えます。
Live
という単語をLyve
に変更します。これで、音声がこの単語を正しく発音するようになります。Save を選択し、次に Deploy All` ボタンを選択します。
デプロイが成功したことを知らせる確認メッセージが表示されます。
別の音声を使う 🔗
Polly.Salliは、このインテグレーションに使用できる数多くのAmazon Pollyボイスのうちの1つです。他のボイスがどのように聞こえるか確認したい場合は、以下の手順に従ってください。
TwilioコンソールUIで、Programmable Voice、TwiML、Text-to-Speech の順に移動します。
Current Language Mapping の下にあるプラスボタンを選択します。
言語を選択します。
Provider として Amazon Polly を選択し、希望の音声を選択します。
テストするテキストを入力します。
Amazon Pollyの音声が決まったら、
Salli
を希望の音声に置き換えて、前述の指示に従います。
TwilioとSplunk On-Callのトラブルシューティング 🔗
問題1:オンコール担当者が電話を受けません。 🔗
発信者には次のメッセージが聞こえます。「次のオンコール担当者を試しています、次のオンコール担当者を試しています、次のオンコール担当者を試しています。${Team}にメッセージを残し、終わったら電話をお切りください」
これは、有料のTwilioアカウントではなく、トライアルTwilioアカウントが使用されているためかもしれません。電話をかける前にTwilioで電話番号を確認する必要があります。さらに、有料のTwilioアカウントであっても、特定の国(スロバキアなど)の電話番号は、電話をかける前にTwilio番号で確認する必要があります。
通話先の電話番号を確認するには、Twillioのドキュメントで「Add a Verified Caller ID via the Console Site」を検索し、ドキュメントに記載されている手順に従ってください。
問題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:オンコール電話番号の取得にエラーが発生しました。もう一度お試しください。 🔗
このメッセージは、電話をかけようとしている番号がVictorOpsで検証されていないことを意味します。ユーザーのSplunk On-Call個人プロファイルで番号の横にある Verify をクリックして番号を確認し、デバイスに送信された確認コードを入力してください。
問題5:チーム${team-name}が存在しません。管理者に連絡して問題を解決してください。 🔗
このメッセージは、Twilioの Value` 列の Environmental Variables のチームのスペルや大文字小文字が、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アカウントであっても、特定の国(スロバキアなど)の電話番号は、電話をかける前にTwilio番号で確認する必要があります。
通話先の電話番号を確認するには、Twilioのドキュメントで「Add a Verified Caller ID via the Console Site」を検索し、ドキュメントに記載されている手順に従ってください。
問題11:アプリケーションエラーが発生しました。さようなら。 🔗
この場合、Twilioログに82002と11200エラーが表示されるかもしれません。
これは、Splunk On-Call関数内で使用されているコードが正しくなく、パスが正しく指定されていないことを示しています。関数のパスは次のようにする必要があります: /victorops-live-call-routing
。依存関係がすべてコピーされていないか (多くの場合 『got’モジュール)、呼び出されようとしている plunk On-Callユーザーのユーザープロファイルに番号がありません。これらの箇所を再確認してください。
問題12: Splunk On-Callユーザーから間違った電話番号に電話がかかってきます 🔗
Splunk On-Callユーザーのプロファイルに複数の電話番号が登録されている場合、Splunk On-Callユーザーのプロファイルに最も長く登録されている電話番号がインテグレーションによって使用されます。電話をかけてほしくない番号を削除し、再度追加することで、どの番号に電話をかけるかを制御できます。
問題13:おかけになった電話番号は現在使われておりません。番号をお確かめの上、おかけ直しください。 🔗
このメッセージは、Twilioの電話番号に機能が正しく割り当てられていない可能性があります。着信時にSplunk On-Call機能が実行されるように電話番号が設定されていることを確認してください。
問題14: 「Failed to deploy your function」というメッセージが表示されます。 🔗
Twilioの Configure ページにある環境変数と依存関係のリストで保存しようとしたときに、このエラーメッセージが表示された場合、got 依存関係の許容値が最近変更されたことが原因である可能性があります。以前は、この got 依存関係のバージョンは空白のままにしておくことをお勧めしましたが、got`のv10パッケージへの最近の変更に伴い、このバージョンを `9.6.0 と指定する必要があります。すべての依存関係が上記の「環境変数の設定」セクションの表と一致していることを確認し、再度保存します。
問題15:インテグレーションが一見ランダムなチームに電話をかけます 🔗
これは、Twilio関数で使用されているコードが、ユースケースで意図されたものではないことが原因かもしれません。標準の単一電話番号設定を行う場合は、Functions、Manage、VictorOps にある既存のコードを削除し、https://github.com/victorops/twilio-live-call-routing/blob/master/victorops-twilio.js にあるコードに置き換えてください。
注:
VictorOps内のエスカレーションポリシーでは、ライブコールルーティングは、ローテーションまたはエスカレーションポリシーで直接参照されるユーザーまたはローテーションにのみ電話をかけます。ライブコールルーティングは、別のエスカレーションポリシーを実行するステップを認識せず、むしろそのステップをスキップしてすぐに次のステップに進みます。