外部テレフォニープロバイダー用のOkta Workflowを構成する
このOkta Workflowsユースケースは、Workflowsのシステム制限で説明されているイエローゾーンに該当します。このユースケースでは、システムの制限や他の警告に陥るリスクが高くなるため、アーキテクチャとベストプラクティスに十分な注意を払う必要があります。
代わりにOkta APIを使用します。開発者ドキュメントテレフォニーインラインフックリファレンスを参照してください。
このタスクでは、選択したテレフォニープロバイダーを通じてエンドユーザーにワンタイムパスコード(OTP)を送信するフローをOkta Workflowsに作成する方法について説明します。フローは次のようになります。
開始する前に
- テレフォニーのドキュメントを参照して、規制要件、通話料金詐、技術的考慮事項を理解します。
- Okta Workflowsをセットアップします。
- Okta orgからの接続をセットアップします。Oktaコネクターを認可するを参照してください。
- APIコネクター用の接続をセットアップします。APIコネクターカードを使った認証を参照してください。
- 選択したテレフォニープロバイダーをセットアップします。次の情報をメモします。
- アカウントSID
- Authトークン
- 電話番号
- POSTリクエストを送信するためのSMSメッセージURL。たとえば、Twilio URLは次のとおりです。
https://api.twilio.com/2010-04-01/Accounts/{yourtwilioaccountid}/Messages.jsonこの例では、
{yourtwilioaccountid}がご利用のTwilioアカウントIDです。
フローを作成する
- Admin Consoleでに進みます。
- Workflowsコンソールでをクリックします。
APIエンドポイントイベントカードを作成する
- イベントを追加(Add Event)をクリックします。APIエンドポイント用のOktaアプリを検索して選択します。
- APIエンドポイント設定(API Endpoint settings)ウィンドウでセキュリティレベル(Security level)をクライアントトークンでセキュリティを確保(Secure with client token)に設定します。
- クライアントトークン(Client token)フィールドは空白のままにして、閉じる(Close)をクリックします。
- 本文(Body)セクションで、以下のフィールドを作成します。フィールドのドロップダウンをクリックしてフィールドのタイプを変更します。
| フィールド | タイプ |
|---|---|
|
data |
オブジェクト |
|
> userProfile |
オブジェクト |
|
> > userId |
テキスト |
|
> messageProfile |
オブジェクト |
|
> > メッセージテンプレート(msgTemplate) |
テキスト |
|
> > phoneNumber |
テキスト |
|
> > otp |
テキスト |
Compose関数カードを作成する
- 関数を追加(Add function)をクリックします。Compose関数カードを検索して選択します。
- このカードに、次のテキストを入力します:
To=phoneNumber&From={yourphonenumber}&Body=msgTemplate - phoneNumberとmsgTemplateフィールドをマッピングするには、これらのフィールドをAPIエンドポイント(API Endpoint)イベントカードからドラッグアンドドロップします。
{yourphonenumber}を国コードを含む独自の電話番号に置き換えます。これは、自分に割り当てられたテレフォニープロバイダーの番号です。
Construct関数カードを作成する
- 関数を追加(Add function)をクリックします。Object Construct関数カードを検索して追加します。
- このカードに、承諾(Accept)入力テキストフィールドとコンテンツタイプ(Content-Type)入力テキストフィールドを追加します。
- 以下のフィールドに値を入力します。
- 承諾(Accept):
application/json - コンテンツ型(Content-Type):
application/x-www-form-urlencoded
- 承諾(Accept):
If Error関数カードを作成する
- 関数を追加(Add function)をクリックします。If Error関数カードを検索して選択します。
- If Error関数カードがTryモードになっていることを確認します。
このカード内に次のカードを作成します。
APIコネクターカードを作成する
- 追加(+)メニュー内で、雲アイコンをクリックします。APIコネクター(API Connector)カードを検索して選択します。
- Postタイプを選択します。
- Postカードに、テレフォニープロバイダーのSMSメッセージURLを入力します。
- 出力(Output)フィールドをConstruct関数カードからフィールドにドラッグアンドドロップします。
- 出力(Output)フィールドをCompose関数カードからフィールドにドラッグアンドドロップします。
- でsidテキストフィールドを作成します。
成功用のCompose関数カードを作成する
- Postカードの横の追加(+)メニュー内で、計算機アイコンをクリックします。Compose関数カードを検索して選択します。
-
このカードに次のコードを入力します。
{ "commands":[ { "type":"com.okta.telephony.action", "value":[ { "status":"SUCCESSFUL", "provider":"<YOURPROVIDER>", "transactionId":"sid" } ] } ] } <YOURPROVIDER>をTwilioなどのテレフォニープロバイダーの名前に置き換えます。- sidフィールドをPostカードからドラッグアンドドロップします。
- 出力(Output)フィールドのドロップダウンメニューをクリックし、名前を
Successに変更します。 - If Errorカードの出力を表示(View outputs)をクリックします。
Responseという出力オブジェクトフィールドを作成します。- レスポンス(Response)フィールドの下で、成功(Success)フィールドをComposeカードからドラッグアンドドロップします。
エラーフィールドを追加する
- If Errorカードで、TryモードからIf Errorモードに切り替えます。
- エラー(Error)出力で、以下のフィールドを作成します。フィールドのドロップダウンをクリックしてフィールドのタイプを変更します。
| フィールド | タイプ |
|---|---|
|
body |
オブジェクト |
|
> code |
テキスト |
|
> status |
テキスト |
|
> message |
テキスト |
エラー用のCompose関数カードを作成する
- エラー(Error)出力フィールドの横の追加(+)メニュー内で、計算機アイコンをクリックします。Compose関数カードを検索して選択します。
-
このカードに次のコードを入力します。
{ "error":{ "errorSummary":"Failed to deliver SMS to phoneNumber", "errorCauses":[ { "errorSummary":"Couldn't deliver OTP", "reason":"message" } ] } } - phoneNumberフィールドをAPIエンドポイント(API Endpoint)イベントカードからドラッグアンドドロップします。
- messageフィールドをエラー(Error)出力からドラッグアンドドロップします。
- 出力(Output)フィールドのドロップダウンメニューをクリックし、名前を
Errorに変更します。 - If Errorカードのレスポンス(Response)セクションの下にエラー(Error)フィールドをドラッグアンドドロップします。
If Errorモードのカードは次のようになります。
これでIf Error関数カードが完成しました。
Return Rawカードを作成する
- フローで、関数を追加(Add function)をクリックします。Return Raw関数カードを検索して選択します。
- 出力(Output)フィールドをConstructカードからヘッダー(Headers)フィールドにドラッグアンドドロップします。
- If Error(Response)カードのレスポンス(Response)(If Error)フィールドを本文(Body)フィールドにドラッグアンドドロップします。
- フローを保存してオンにします。
テレフォニーインラインフックの情報をコピーする
- APIエンドポイント(APPI Endpoint)(API Endpoint)イベントカードに移動し、[</>]アイコンをクリックしてAPIエンドポイント設定を開きます。
- 設定ダイアログから、呼び出しURL(Invoke URL)、エイリアス(Alias)、クライアントトークン(Client Token)の情報をコピーします。この情報は、次の手順でテレフォニーインラインフックを作成するときに必要になります。
次の手順