外部テレフォニープロバイダー用のOkta Workflowを構成する

このOkta Workflowsユースケースは、「Workflowsのシステム制限」で説明されているイエローゾーンに該当します。このユースケースでは、システムの制限や他の警告に陥るリスクが高くなるため、アーキテクチャとベストプラクティスに十分な注意を払う必要があります。

Oktaでは、代わりにOkta APIを使用することを推奨します。開発者ドキュメントの「テレフォニーインラインフックリファレンス」を参照してください。

このタスクでは、選択したテレフォニープロバイダーを通じてエンドユーザーにワンタイムパスコード(OTP)を送信するフローをOkta Workflowsに作成する方法について説明します。作成時のフローは次のようになります。

はじめに

  • テレフォニーのドキュメントを参照し、規制要件、有料詐欺、技術的考慮事項を理解します。

  • Okta Workflowsをセットアップします。
  • 選択したテレフォニープロバイダーをセットアップします。次の情報をメモします。
    • アカウントSID
    • Authトークン
    • 電話番号
    • POSTリクエストを送信するためのSMSメッセージURL。たとえば、TwilioのURLは https://api.twilio.com/2010-04-01/Accounts/{yourtwilioaccountid}/Messages.jsonで、{yourtwilioaccountid}がお手持ちのTwilioアカウントIDになります。

フローを作成する

  1. Admin Console[Workflow][Workflows console(Workflowsコンソール)]に移動します。
  2. [Workflows Console(Workflowsコンソール)][Flows(フロー)][New Flow(新規フロー)]をクリックします。

新しいフローにカードを追加できるようになります。

APIエンドポイントイベントカードを作成する

  1. [Add Event(イベントを追加)]をクリックします。APIエンドポイント用のOktaアプリを検索して選択します。
  2. [APIエンドポイント設定]ウィンドウで、[Security level(セキュリティレベル)][Secure with client token(クライアントトークンでセキュリティを確保)]に設定します。
  3. [Client token(クライアントトークン)]フィールドは空白のままにして[Close(閉じる)]をクリックします。
  4. [Body(本文)]セクションで、以下のフィールドを作成します。フィールドのドロップダウンをクリックしてフィールドのタイプを変更します。
フィールド タイプ

data

オブジェクト

> userProfile

オブジェクト

> > userId

テキスト

> messageProfile

オブジェクト

> > messageTemplate

テキスト

> > phoneNumber

テキスト

> > otp

テキスト

requestType

テキスト

Compose関数カードを作成する

  1. [Add function(関数を追加)]をクリックします。[Compose]関数カードを検索して選択します。
  2. このカードに、次のテキストを入力します:To=phoneNumber&From={yourphonenumber}&Body=messageTemplate
  3. phoneNumber(電話番号)messageTemplate(メッセージテンプレート)フィールドをマッピングするには、これらのフィールドをAPI Endpoint(APIエンドポイント)イベントカードからドラッグアンドドロップします。
  4. {yourphonenumber}を国コードを含む独自の電話番号に置き換えます。これは、割り当てられたテレフォニープロバイダーの番号です。

Construct関数カードを作成する

  1. [Add function(関数を追加)]をクリックします。[Object Construct]関数カードを検索して追加します。
  2. このカードに、[Accept(承諾)]入力テキストフィールドと[Content-Type(コンテンツタイプ)]入力テキストフィールドを追加します。
  3. これらのフィールドに次の値を入力します。
    • [Accept(承諾)]application/json
    • [Content-Type(コンテンツタイプ)]application/x-www-form-urlencoded

If Error関数カードを作成します。

  1. [Add function(関数を追加)]をクリックします。[If Error]関数カードを検索して選択します。
  2. [If Error]関数カードが[Try]モードになっていることを確認します。

このカード内に次のカードを作成します。

APIコネクターカードを作成する

  1. [+(追加)]メニュー内で、雲アイコンをクリックします。[API Connector(APIコネクター)]カードを検索して選択します。
  2. [Post]タイプを選択します。
  3. [Post]カードに、テレフォニープロバイダーのSMSメッセージURLを入力します。
  4. [Output(出力)]フィールドを[Construct]関数カードから[Request(リクエスト) Headers(ヘッダー)]フィールドにドラッグアンドドロップします。
  5. [Output(出力)]フィールドを[Compose]関数カードから[Request(リクエスト) Body(本文)]フィールドにドラッグアンドドロップします。
  6. [Request(リクエスト) Body(本文)]に、[sid]テキストフィールドを作成します。

成功用のCompose関数カードを作成する

  1. [Post]カードの横の[+(追加)]メニュー内で、計算機アイコンをクリックします。[Compose]関数カードを検索して選択します。
  2. このカードに、次のコードを入力します。

    コピー
    {
    "commands":[
    {
    "type":"com.okta.telephony.action",
    "value":[
    {
    "status":"SUCCESSFUL",
    "provider":"<YOURPROVIDER>",
    "transactionId":"sid"
    }
    ]
    }
    ]
    }
  3. <YOURPROVIDER>Twilioなどのテレフォニープロバイダーの名前に置き換えます。
  4. [sid]フィールドを[Post]カードからドラッグアンドドロップします。
  5. [Output(出力)]フィールドのドロップダウンメニューをクリックし、名前を「Success(成功)」に変更します。
  6. [If Error]カードの[View outputs(出力を表示)]をクリックします。
  7. [Response(レスポンス)]という出力オブジェクトフィールドを作成します。
  8. [Response(レスポンス)]フィールドの下で、[Success(成功)]フィールドを[Compose]カードからドラッグアンドドロップします。

エラーフィールドを追加する

  1. [If Error]カードで、[Try]モードから[If Error]モードに切り替えます。
  2. [Error(エラー)]出力で、以下のフィールドを作成します。フィールドのドロップダウンをクリックしてフィールドのタイプを変更します。
フィールド タイプ

body

オブジェクト

> code

テキスト

> status

テキスト

> message

テキスト

エラー用のCompose関数カードを作成する

  1. [Error(エラー)]出力フィールドの横の[+(追加)]メニュー内で、計算機アイコンをクリックします。[Compose]関数カードを検索して選択します。
  2. このカードに、次のコードを入力します。

    コピー
    {
    "error":{
    "errorSummary":"Failed to deliver SMS to phoneNumber",
    "errorCauses":[
    {
    "errorSummary":"Couldn't deliver OTP",
    "reason":"message"
    }
    ]
    }
    }
  3. [phoneNumber]フィールドを[API Endpoint(APIエンドポイント)]イベントカードからドラッグアンドドロップします。
  4. [message(メッセージ)]フィールドを[Error(エラー)]出力からドラッグアンドドロップします。
  5. [Output(出力)]フィールドのドロップダウンメニューをクリックし、名前を「Error(エラー)」に変更します。
  6. [If Error]カードの[Response(レスポンス)]セクションの下に[Error(エラー)]フィールドをドラッグアンドドロップします。

[If Error]モードのカードは次のようになります。

これで[If Error]関数カードが完成しました。

Return Rawカードを作成する

  1. フローで、[Add function(関数を追加)]をクリックします。[Return Raw]関数カードを検索して選択します。

  2. [Output(出力)]フィールドを[Construct]カードから[Headers(ヘッダー)]フィールドにドラッグアンドドロップします。

  3. [If Error]カードの[Response(レスポンス)]フィールドを[Body(本文)]フィールドにドラッグアンドドロップします。

  4. フローを保存してオンにします。

テレフォニーインラインフックの情報をコピーする

  1. [APPI Endpoint(APIエンドポイント)]イベントカードに移動し、[</>]アイコンをクリックしてAPIエンドポイント設定を開きます。
  2. 設定ダイアログから、[Invoke URL(呼び出しURL)][Alias(エイリアス)][Client Token(クライアントトークン)]の情報をコピーします。

この情報は、次の手順でテレフォニーインラインフックを作成するときに必要になります。

次の手順

外部のテレフォニーサービスプロバイダーに連絡する