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

電話オーセンティケーターを使用するために、Okta WorkflowsまたはOkta APIのいずれかを使用して外部テレフォニーサービスプロバイダーに接続できます。このタスクでは、選択したテレフォニープロバイダーを通じてエンドユーザーにワンタイムパスコード(OTP)を送信するフローをOkta Workflowsに作成する方法について説明します。

作成時のフローは次のようになります。

代わりにOkta APIを使用する場合は、開発者ドキュメント「Telephony Inline Hook Reference(テレフォニーインラインフックリファレンス)」を参照してください。

はじめに

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

  • Okta Workflowsをセットアップします。
  • 選択したテレフォニープロバイダーをセットアップします。次の情報をメモします。
    • アカウントSID
    • Authトークン
    • 電話番号
    • POSTリクエストを送信するためのSMSメッセージURL。たとえば、Twilioの場合は、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(本文)]セクションで、以下のフィールドを作成します。フィールドのドロップダウンをクリックしてフィールドのタイプを変更します。
フィールド タイプ
データ オブジェクト
> 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(関数を追加)]をクリックします。[Construct]関数カード([Object type(オブジェクトタイプ)])を検索して選択します。
  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":"requestType",
    "value":[
    {
    "status":"SUCCESSFUL",
    "provider":"<YOURPROVIDER>",
    "transactionId":"sid"
    }
    ]
    }
    ]
    }
  3. requestTypeをマッピングします。このフィールドを[API Endpoint(APIエンドポイント)]イベントカードからドラッグアンドドロップします。
  4. <YOURPROVIDER>をテレフォニープロバイダーの名前に置き換えます。
  5. [sid]フィールドを[Post]カードからドラッグアンドドロップします。
  6. [Output(出力)]フィールドのドロップダウンメニューをクリックし、名前を「Success(成功)」に変更します。
  7. [If Error]カードの[View outputs(出力を表示)]をクリックします。
  8. [Response(レスポンス)]という出力オブジェクトフィールドを作成します。
  9. [Response(レスポンス)]フィールドの下で、[Success(成功)]フィールドを[Compose]カードからドラッグアンドドロップします。

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

  1. [If Error]カードで、[Try]モードから[If Error]モードに切り替えます。
  2. [Error(エラー)]出力で、以下のフィールドを作成します。フィールドのドロップダウンをクリックしてフィールドのタイプを変更します。
フィールド タイプ
本文 オブジェクト
> 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. フローを保存してオンにします。

これでWorkflowが設定されました。

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

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

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

次の手順

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