Anyflow Embed Docs
管理画面を開く
  • 👋イントロダクション
    • はじめに
    • 初期セットアップ
    • 用語集
  • 🔰トライアルツアー
    • トライアルツアー初級編
      • STEP1|アカウント作成 〜 ソリューション作成
      • STEP2|エンドユーザー変数
      • STEP3|ifステップ
      • STEP4|変数の活用、デバッグ
      • 動画チュートリアル
    • トライアルツアー中級編
      • STEP1 | 独自のアクションを追加する
      • STEP2 | My Event を理解する
      • STEP3 | My Event を実装する
    • トライアルツアーが終わったら
  • 🍳レシピ
    • CRM
      • SalesforceのToDoデータを取得する
      • Salesforceの取引先データを取得する
      • Salesforceの取引先データを登録する
      • Salesforceの商談を取得する
      • Salesforceのリードを取得する
      • HubSpotのコンタクトデータを取得する
      • HubSpotの会社データを取得する
      • HubSpotの取引データを取得する
    • コミュニケーション
      • Slack チャンネルにファイルをアップロードする
      • Slack チャンネルのメンバー情報一覧を取得する
      • 独自のSlackBotを設定する
    • 人事労務
      • SmartHRの部署データを取得する
      • SmartHRの従業員データを取得する
      • freee人事労務の従業員データを取得する
      • freee人事労務の勤怠データを取得する
    • 会計
      • freee会計の事業所データを取得する
      • freee会計の取引先データを取得する
      • freee会計の取引データを取得する
      • freeeコネクタのスコープを変更する
    • グループウェア
      • Google DriveのOAuthアプリを作成する
  • 🎨ソリューションエディタ
    • ソリューションエディタとは
    • トリガー
      • 自社プロダクト起点
        • Clickトリガー
        • Requestトリガー
          • Responseステップ
        • My Eventトリガー
          • アクセストークンの発行
        • Webhookトリガー
        • Request / My Event / Webhook トリガーの違い
      • 外部プロダクト起点
        • ポーリングトリガー
        • リアルタイムトリガー
      • スケジューラートリガー
      • トリガー条件
    • アクション
      • APIの呼び出し
        • 専用アクション
        • カスタムアクション
        • HTTPアクション
      • データの変換
        • Pythonアクション
        • 変数アクション
        • リストアクション
        • 日付と時刻アクション
        • CSVアクション
      • データの記録
        • キーバリューストア(KVS)アクション
        • ログアクション
        • メールアクション
    • ロジック
      • if
      • 繰り返し
      • エラー監視
      • 停止
    • 変数
      • 標準変数
      • エンドユーザー変数
    • 共通仕様
      • スキーマ定義
      • 固定リストと動的リスト
      • Formula
  • 🖼️ウィザードエディタ
    • ウィザードエディタとは
    • ウィジェット
      • アシスト
      • 複数選択アシスト
      • テーブルアシスト
      • チェックボックス
      • マッピング
      • コンディション
      • CSV(ファイル全体)
      • CSV項目(ヘッダーのみ)
    • ウィザードの仕様
    • 詳細設定
      • Markdown記法
      • テキストの入力パターンを指定する
      • デフォルト値を指定する
  • 🔌コネクタ
    • 対応コネクタ一覧
    • SaaSコネクタ固有の注意点
      • SaaS側でIPアドレス制限をしている場合
      • 自社独自のOAuthクライアントが必須のSaaS
      • cybozu.com製品で認証エラーとなる場合
      • kintoneコネクタとkintone(OAuth)コネクタの違い
      • ZoomコネクタとZoom(カスタム)コネクタの違い
      • SlackBotコネクタの違い
      • 2種類のSmartHRコネクタについて
    • OAuth画面をカスタムする
  • 🚀リリース
    • テスト
    • デプロイ
    • デプロイ環境
    • エンドユーザーへの提供方法
    • 自社プロダクトへの組み込み
      • JWTや公開鍵を生成する
      • SDK組み込みツアー
    • Anyflowドメインでの提供
  • 🧰運用/保守
    • 実行履歴
      • エンドユーザー向け実行履歴
      • ベンダー向け実行履歴
    • エラーへの対応
      • 連携先アプリの認証エラー
      • アクションの自動リトライ
      • ソリューションの再実行
    • イベント通知
    • ソリューション実行の上限値
    • ソリューションの削除
  • 📄ポリシー
    • 障害時の対応
    • エンドユーザーの問い合わせ
    • サービスレベル/稼働率
    • サービスの責任範囲
    • セキュリティポリシー
  • ⚙️Anyflow SDK
    • Anyflow SDK v0.13.0
      • エラータイプ
      • リファレンス
      • マイグレーションガイド
      • よくあるご質問
  • ⚙️Anyflow API
    • Vender Server API
      • Open API Specification
    • End User API
      • Open API Specification
    • Webhook
      • Open API Specification
GitBook提供
このページ内
  • SDK をインストールする
  • SDK を初期化する
  • オプション
  • SDK インスタンスを取得する
  • SDK インスタンスを破棄する
  • ソリューションを取得する
  • ソリューションの状態を確認する
  • ソリューションをインストールする
  • ソリューションウィザードを作成する
  • ソリューションウィザードを iframe に読み込む
  • ソリューションウィザードを破棄する
  • ソリューションをアンインストールする
  • ソリューションウィザードの状態を監視する
  • ソリューションの設定を変更する
  • ソリューションの有効状態を変更する
  • ソリューションを手動実行する
  • ソリューションの実行状態を確認する
  • ソリューションの実行状態を監視する
  • ソリューションの実行履歴を表示する
  • ソリューションの実行履歴を取得する
  • My Event を送信する
  1. Anyflow SDK

Anyflow SDK v0.13.0

自社プロダクトにAnyflowを組み込む際に使用するフロント SDK のドキュメントです。

前へセキュリティポリシー次へエラータイプ

最終更新 1 か月前

SDK をインストールする

npm を使用して SDK をインストールするには次のコマンドを実行します。

npm install @anyflowinc/embed-sdk

npm を使用していない場合はからダウンロードして JavaScript ファイルを直接使用することも出来ます。参考:

SDK を初期化する

AnyflowSDK のインスタンスを取得する前に、 AnyflowSDK を init 関数で初期化する必要があります。

init 関数の引数には、 AnyflowSDK が JWT を取得するために使用する非同期関数を指定します。 ./path/to/your/jwt/endpoint には、自社プロダクトに実装したJWTエンドポイントを設定します。 (参考: )

const fetchJwt = async () => {
  const res = await fetch("./path/to/your/jwt/endpoint");
  const json = await res.json();
  return json["token"];
};

AnyflowSDK.init(fetchJwt);
const fetchJwt = async () => {
  const res = await fetch("./path/to/your/jwt/endpoint");
  const json = await res.json();
  return json["token"];
};

AnyflowSDK.init(fetchJwt);

initに指定する関数について

init に指定する関数は、必ず実行ごとに異なる JWT を返却する必要があります。 この JWT は内部でアクセストークンに交換されてから使用されますが、セキュリティ上の理由から、アクセストークンの発行には同じ JWT は2回以上使用できないようになっています。 SDK はアクセストークンの有効期限切れなどの理由によりこの関数を複数回実行することがあります。

注意

SDK の初期化は、後述する destroy を呼び出すまで、2回実行することはできません。すでに初期化している状態でもう一度初期化しようとすると、 sdk_already_initialized エラーがスローされます。

オプション

init 関数の第2引数にオプションを指定できます。全てのオプションの指定は任意です。

AnyflowSDK.init(fetchJwt, {
  env: "staging"
});
AnyflowSDK.init(fetchJwt, {
  env: "staging"
});
オプション
説明
デフォルト値

env

デプロイ環境のユニーク名を指定します。指定しなければデフォルトデプロイ環境が使用されます。

undefined

SDK インスタンスを取得する

AnyflowSDK では、有効なインスタンスは1つのみ存在します。 SDK を初期化すると、 instance プロパティから有効な AnyflowSDK のインスタンスを取得することができるようになります。

const sdk = AnyflowSDK.instance;
const sdk = AnyflowSDK.instance;

注意

SDK を初期化する前に instance プロパティにアクセスすると、 sdk_not_initialized エラーがスローされます。

SDK インスタンスを破棄する

AnyflowSDK を初期化すると、ソリューションウィザードを表示するための iframe と通信するために window にメッセージハンドラが設定されます。

SDK インスタンスが不要になれば、これらのメッセージハンドラが残ったままにならないように、 SDK インスタンスを破棄することができます。

SDK インスタンスを破棄するには、 AnyflowSDK の destroy 関数を実行します。

注意

destroy を実行すると、それまでに使用していた SDK インスタンスはもう使用できなくなります。破棄した SDK インスタンスを使用しようとすると、 sdk_already_destroyed エラーがスローされます。 SDK インスタンスの isDestroyed プロパティによって、SDK インスタンスが破棄されているかどうかを確認できます。

もう一度 SDK インスタンスが必要になった場合は、改めて init 関数で AnyflowSDK を初期化してください。

ソリューションを取得する

getSolution メソッドを使用して特定のソリューションの情報 (Solution) を取得するか、 getSolutions メソッドを使用して現在使用可能なすべてのソリューションをリストで取得することができます。デプロイされていないソリューションは使用可能ではないため取得できません。

// 特定のソリューションの情報のみ取得する
const solution: Solution = await sdk.getSolution("solution_id");

// リストで取得する
const solutions: Solution[] = await sdk.getSolutions();
// 特定のソリューションの情報のみ取得する
const solution = await sdk.getSolution("solution_id");

// リストで取得する
const solutions = await sdk.getSolutions();

取得した Solution オブジェクトは不変です。 SDK を使用してソリューションの有効状態を変更しても、すでに取得してあった Solution オブジェクトの値が変更されることはありません。最新の値を取得するには、もう一度 getSolution メソッドで取得し直してください。

ソリューションの状態を確認する

ソリューションの状態を取得することで、エンドユーザーのソリューションの利用状況に応じて UI の表示を変更する等を実現できます。

ソリューションの状態は、取得した Solution オブジェクトの state プロパティからアクセスできます。

const state: SolutionState = solution.state;
const state = solution.state;

SolutionState の値は、次のいずれかです:

state
説明

not_installed

まだソリューションがインストールされていません。

enabled

ソリューションが有効です。

disabled

ソリューションはインストールされていますが、有効にされていません。

ソリューションをインストールする

ソリューションをインストールするには、ソリューションウィザードと呼ばれる画面を表示し、ユーザーに各種設定項目を入力してもらう必要があります。

ソリューションウィザードを作成する

ソリューションウィザードの UI は Anyflow によって提供されるため、まずは createWizard メソッドを使用して SolutionWizard をインスタンス化します。 createWizard にはソリューションウィザードを表示させたい iframe を指定します。

const iframe = document.getElementById("solution_wizard");
const solutionWizard: SolutionWizard = sdk.createWizard(iframe);
const iframe = document.getElementById("solution_wizard");
const solutionWizard = sdk.createWizard(iframe);

iframe や SolutionWizard のインスタンスはソリューションごとに別々のものを使用することも、複数のソリューションで一つのものを共有して使用することもできます。

ソリューションウィザードを iframe に読み込む

ソリューションウィザードを指定した iframe に表示させるには、 SolutionWizard オブジェクトの load メソッドを使用します。 load メソッドにはソリューションウィザードを表示したいソリューションの ID を指定します。

solutionWizard.load("your_solution_id");
solutionWizard.load("your_solution_id");

ヒント

iframeのスタイルは自社プロダクト側で調整する必要があります。

ソリューションウィザードを破棄する

iframe 内に表示したソリューションウィザードを破棄するには、 unload メソッドを実行します。ソリューションウィザードが完了またはキャンセルされたタイミングで unload することを推奨します。

solutionWizard.unload();
solutionWizard.unload();

ソリューションをアンインストールする

ソリューションをアンインストールにするには、 sdk の uninstallSolution メソッドを実行します。ソリューションは再度インストールされるまで実行できなくなります。

await sdk.uninstallSolution("your_solution_id");
await sdk.uninstallSolution("your_solution_id");

ソリューションウィザードの状態を監視する

ソリューションウィザードが完了したりユーザーによってキャンセルされた時に処理を実行するには、 SolutionWizard オブジェクトに対して addListener メソッドで SolutionWizardListener を設定します。

const listener: SolutionWizardListener = (event: SolutionWizardEvent, solutionId: string, solutionInstanceId?: string) => {
  if (event === "loaded") {
    // ソリューションウィザードが読み込まれたとき
  }
  if (event === "completed") {
    // ソリューションウィザードが完了したとき(ソリューションがインストールされたとき)
    // 完了したときのみ、リスナの第三引数 solutionInstanceId が渡ってきます
  }
  if (event === "canceled") {
    // ソリューションウィザードがキャンセルされたとき
  }
}
solutionWizard.addListener(listener);
const listener = (event, solutionId, solutionInstanceId) => {
  if (event === "loaded") {
    // ソリューションウィザードが読み込まれたとき
  }
  if (event === "completed") {
    // ソリューションウィザードが完了したとき
    // 完了したときのみ、リスナの第三引数 solutionInstanceId が渡ってきます
  }
  if (event === "canceled") {
    // ソリューションウィザードがキャンセルされたとき
  }
}
solutionWizard.addListener(listener);

リスナが不要になった場合は removeListener メソッドで削除できます。

solutionWizard.removeListener(listener);
solutionWizard.removeListener(listener);

ソリューションインスタンスIDについて

ソリューションの設定を変更する

インストールしたソリューションの設定を変更するには、ソリューションをインストールした時と同様、ソリューションウィザードを使用します。

インストール済みの状態でソリューションウィザードを表示すると、ユーザーが以前に設定した内容が入った状態のソリューションウィザードが表示されます。もう一度ウィザードを完了させることで、ソリューションの設定が変更できます。

ソリューションウィザードを iframe に読み込むには、インストール時と同じように、 SolutionWizard オブジェクトの load メソッドを実行します。

solutionWizard.load("your_solution_id");
solutionWizard.load("your_solution_id");

ソリューションの有効状態を変更する

ソリューションを有効にするには sdk の enableSolution メソッドを、無効にするには disableSolution メソッドを実行します。

// 有効にする
await sdk.enableSolution("your_solution_id");

// 無効にする
await sdk.disableSolution("your_solution_id");
// 有効にする
await sdk.enableSolution("your_solution_id");

// 無効にする
await sdk.disableSolution("your_solution_id");

ソリューションを手動実行する

ユーザーの操作に応じてソリューションを手動実行するには、 SDK の runSolution メソッドを実行します。

const job = await sdk.runSolution("your_solution_id");
const job = await sdk.runSolution("your_solution_id");

ヒント

runSolution メソッドで実行することができるのは、Clickトリガー(手動実行トリガー)が指定されているソリューションのみです。手動実行できないソリューションで runSolution を実行すると、 AnyflowError がスローされます。 Solution オブジェクトの runnable プロパティによって、手動実行トリガーが指定されているかどうかを確認できます。

ソリューションの実行状態を確認する

runSolution の戻り値として取得できる Promise を解決すると得られるのは、ソリューションの実行インスタンスを表す Job オブジェクトです。

Job オブジェクトも Solution オブジェクトと同じく不変で、実行状態が変更されてもすでに取得済みの Job オブジェクトの値が変更されることはありません。

ヒント

SDK の getJob メソッドを使用して、最新の Job オブジェクトを取得できます。

ソリューションの実行状態は Job オブジェクトの state プロパティを読み込むことで確認できます。

state
説明

running

この Job はまだ実行中です。

succeeded

この Job の実行は正常に完了しました。

failed

この Job の実行は失敗しました。

ソリューションの実行状態を監視する

Job オブジェクト自体は不変のため、実行状態が変更されてもそのオブジェクトは変更されません。

ソリューションの実行状態が変更された時に新しい Job オブジェクトを取得するには、 SDK の observeJob メソッドを実行してジョブの変更を監視する必要があります。

observeJob に指定する JobCallback はジョブが変更された時に呼び出されます。 JobCallback の第一引数は変更内容を表す JobEvent で、第二引数は変更後の値を持った Job オブジェクトです。

const callback: JobCallback = (event: JobEvent, job: Job) => {
  if (event === "state_changed") {
    // ここで実行状態が変更されたときの処理
  }
}
sdk.observeJob("your_job_id", callback);
const callback = (event, job) => {
  if (event === "state_changed") {
    // ここで実行状態が変更されたときの処理
  }
}
sdk.observeJob("your_job_id", callback);

監視を終了するには、 SDK の unobserveJob メソッドを実行します。

sdk.unobserveJob("your_job_id", callback);
sdk.unobserveJob("your_job_id", callback);

ヒント

Job.state が succeeded または failed になると、明示的に unobserveJob を実行しなくても、監視は自動的に終了されます。

ソリューションの実行履歴を表示する

ソリューションの実行履歴を表示するには、 SolutionWizard オブジェクトの loadHistory メソッドを使用します。 loadHistory メソッドには実行履歴を確認したいソリューションの ID を指定します。

loadHistory メソッドを実行すると、ソリューションウィザードを作成するときに指定した iframe にソリューションの実行履歴が読み込まれます。

solutionWizard.loadHistory("your_solution_id");
solutionWizard.loadHistory("your_solution_id");

iframe 内に表示したソリューションの実行履歴を破棄するには、 SolutionWizard オブジェクトの unload メソッドを実行します。 ソリューションの実行履歴を閉じると canceled イベントが発行されるので、そのタイミングで unload することを推奨します。

ソリューションの実行履歴を取得する

ソリューションの実行履歴を iframe に表示するのではなく、データとして直接 SDK から取得することもできます。

データとして取得するには、SDK の getJobs メソッドを使用します。

const jobs: Job[] = await sdk.getJobs("your_solution_id");
const jobs = await sdk.getJobs("your_solution_id");

getJobs の戻り値の Promise が解決すると、ソリューションの実行インスタンスを表す Job オブジェクトの一覧が得られます。実行履歴は直近の20件まで取得できます。 取得にはタイムラグが発生する場合があります。 連続的にgetJobsを実行する場合は、5~10秒程度の間隔を空けて実行してください。

Job オブジェクトも Solution オブジェクトと同じく不変で、実行状態が変更されてもすでに取得済みの Job オブジェクトの値が変更されることはありません。

My Event を送信する

const payload: MyEventPayload = {
  "name": "taro",
  "is_admin": true
};
await sdk.sendMyEvent("user_created", payload);
const payload = {
  "name": "taro",
  "is_admin": true
};
await sdk.sendMyEvent("user_created", payload);

この例では、user_created というキーを持つ My Event を、 payload 変数の値をペイロードとして送信しています。

payload には送信する My Event で設定済みのスキーマに合う構造のデータを指定してください。 スキーマに合わないペイロードを指定しても、このメソッドはエラーを返しません。

My Event のスキーマが求める値がペイロードに含まれていない場合、ソリューション内ではその変数の値は None になります。 たとえば、この例の My Event に { "email": "[email protected]" } をペイロードとして送信すると、ソリューション内の payload.name や payload.is_admin という変数の値は None になります。

次の場合、このメソッドの返す Promise は my_event_not_triggered エラーで reject されます。

  • 指定した My Event が見つからない場合

  • 指定した My Event を使用するソリューションが存在しない場合

  • 指定した My Event を使用するソリューションをエンドユーザーがインストールしていない場合

  • 指定した My Event を使用するソリューションをエンドユーザーが無効にしている場合

エンドユーザーがソリューションをインストールすると、completedのイベントが呼び出され、リスナの第三引数 solutionInstanceId が渡ってきます。 solutionInstanceId はでも取得できます。

ソリューションの実行履歴画面

フロントエンドから直接 を送信するには、sendMyEvent メソッドを使用します。

⚙️
こちらの Google ドライブ
npm を使用していない場合の使用方法
JWTを生成する
My Event
565
ベンダーサーバーAPI