Webサービス

 

サードパーティのデータベースまたはエンドポイント(ウェブサービス)に接続し、情報の送受信を行うことができます。

 

サポートされているWeb接続方法は、HTTP GET、HTTP POST、SOAPおよびRESTです。 

メモ:GET、HTTP POST、SOAPメソッドを使用する場合は、リモートエンドポイントと通信するための、Content Guru社がプロキシアプリケーションを作成する必要があります。お問合せは、お近くのサポートデスクまでお願いします。

プロパティ

「Webサービス」セクション

「入力変数」セクション

「出力変数」セクション

「Webサービス」セクション

オプション

内容

リクエストタイプ

HTTPまたはHTTPSを選択してください。

Webメソッド

接続する手法を「HTTP GET」「HTTP POST」「SOAP」「REST」からいずれかを選択してください。「HTTP GET」はデータを取得するときに選択してください。アクションセルは、入力変数を使ってリクエストURIを自動的にフォーマットします(後述の「出力」プロパティを参照)。例: www.example.com/webpage.php?name1=value1&name2=value2
データは、アクションセルの出力変数に返されます。

「HTTP POST」はデータを送信・取得するときに選択してください。アクションセルの入力変数値は送信メッセージの本文に挿入され、戻り値は出力変数に格納されます。

「SOAP」は、顧客から提供されるWSDL(Web Service Definition Language)ファイルに定義された仕様で、カスタムXMLファイルのフォーマットと送信を行って、リモートWebサービスAPIのクエリを実行する場合に選択してください。アクションセルの入力変数はXMLメッセージ本文で送信され、戻り値は出力変数に格納されます。

メモ:SOAP APIはWSDLファイルに基づいています。このWSDLファイルを使用するプロキシアプリケーションは、Content Guru社が作成する必要があります。作成されると、ウェブサービスがアクションセルの「SOAPメソッド」フィールドに表示され、選択できるようになります。

>「REST」は、外部Webサービスへのデータの送信や、外部Webサービスから返されるデータの受け取りを行う際に選択してください。このアクションセルは入力変数(後述の「入力変数の例」を参照)をJSONエンコードし、それを選択したエンドポイント(後述の「エンドポイント名」を参照)に渡します。データは、アクションセルの出力変数を使用して返されます。

メモ:[REST API]アクションセルは、RESTメソッドの代わりに使用されます。

サーバーアドレス

HTTP GET、HTTP POST、またはSOAPメソッドを使用する場合に設定してください。

リモートサービスのURLを、先頭に「=」を付けたリテラル値、または文字列変数として、記入してください。

リクエストパス

HTTP GET、HTTP POST、またはSOAPメソッドを使用する場合に設定してください。

リモートWebサービスの場所を入力してください。例えば、</webservices/webpage.php>です。先頭に「=」を付けたリテラル値、または文字列変数を使用してください。

エンドポイント名

RESTメソッドを使用する場合に設定してください。

呼び出すエンドポイントエイリアスをドロップダウンリストから選択してください。

メモ:必要なURLは、Content Guru社がこのフィールドに追加します。URLはhttps(TLS 1.2)をサポートしていなければなりません。顧客に代わってRESTエンドポイントを追加することについての詳細は、サポート担当者にお問い合わせください。

タイムアウト

すべてのWebメソッドで設定が必要です。

レスポンスを待つ時間を選択してください。この時間内に応答がない場合は、「タイムアウト」遷移ルートに進みます。

出力 (オプション) 

HTTP GETまたはHTTP POSTメソッドを使用する場合に設定可能なオプションです。

検索を高速化するために、リモートリソースから受信した応答XML内で、該当する出力変数を探す場所を指定することができます。例えば、</response/response2/getvalue>と入力すると、下記のXMLタグにおいて、太字で強調表示されたセクションが検索されます。

<?xml version='1.0'?>

  <response>

    <response1>

       <getvalue id='{name1}'>{value}</getvalue>

       <getvalue id='{name2}'>{value}</getvalue>

    </response1>

    <response2>

       <getvalue id='{name1}'>{value}</getvalue>

       <getvalue id='{name2}'>{value}</getvalue>

    </response2>

  </response>

「入力変数」セクション

すべてのWebメソッドで設定が必要です。

このセクションでは、データベースまたはエンドポイントに値を渡す変数のリストを作成してください。「名前」フィールドには、渡すパラメータのラベルを記入してください。

フィールドに値を設定します(リテラル値または変数)。変数が空欄またはnullの場合は、空白文字として送信されます。

メモ:日付値はリテラルではなく変数として指定する必要があります。

「追加」をクリックすると、名前と値のペアが下のリストに追加されます。

RESTメソッドでの使用例:

次の入力変数はJSONエンコードされており、選択したエンドポイントに渡されます。この例では、入力変数に以下のデータが格納されています。

入力変数名 値

=source Sales

=sourceID 1234567890

=disabled False

[Webサービス]アクションセルは以下のJSONコードを生成します。ここで、タイプは「flow_event」という値を持つ文字列で、Created_atはYYYY-MM-DDTHH.mm.ssという形式のタイムスタンプです。

{
"Type": "flow_event",
"Created_at": "2019-03-18T18:02:23",
"Data":{
"source": "Sales",
"sourceID": "1234567890"
"disabled": "false"
}
}

メモ: セキュリティヘッダがリクエストに追加されます。これをチェックすることで、そのリクエストがContent Guru社によって作られたものであることを確認できます。

「Type」「Created_at」および「Data」フィールドのいずれも、最初の文字を大文字にします。Dataフィールド内の項目のキー値は、すべて小文字にしてください。

入力変数にはなんらかの値が格納されていなければならず、空欄やNullにはできません。

「出力変数」セクション

すべてのWebメソッドで設定が必要です。

このセクションでは、データベースまたはエンドポイントから返される情報を受け取る変数のリストを作成してください。「名前」フィールドに、受け取るパラメータのラベルを記入してください(この名前はデータベース内のパラメータと一致している必要があります)。「値」フィールドには、値を格納する変数を記入してください。「追加」をクリックすると、名前と値のペアが下のリストに追加されます。

RESTの使用

RESTメソッドはHTTP POSTリクエストをサポートしていますが、HTTP GETはサポートしていません。

組織が用意するエンドポイントコールバックURIは、送信中の認証証明書を保護するため、HTTPSにしてください。

それぞれのwebフック通知には、X-Hub-Signatureヘッダーを介してContent Guru社が署名します。このため、署名をデコードすれば、Content Guru社からの通知であることを確認できます。

このX-Hub-Signatureヘッダーの値は、JSONリクエストの本文と顧客が指定する秘密の値で署名を作成して計算します。この署名は、HMACアルゴリズムを使って計算したSHA-256署名を16進数で表したものです。X-Hub-Signatureヘッダーの値は、sha256=という文字列で始まり、その後に署名が続きます。

イベントにはタイムスタンプ属性も含まれるので、必要に応じて検証できます。

[Webサービス]アクションセルは、外部WebサービスからのJSON応答を取り込み、所定の出力変数にデコードします。応答は、ネストではなくフラットでなければなりません。また、JSON応答は以下の規則にも従っている必要があります。また、JSON応答は以下の規則にも従っている必要があります。

例えば、外部Webサービスが以下のように応答する場合、値を格納するために下にリストした出力変数を追加することができます。

{
"id": "234567",
"name": "John Smith",
"sourceid": "400400",
"salesid": "Home Insurance"
}

このデータを格納するために、次の出力変数を追加してください。

=id szid

=name szname

=sourceID szsourceID

=salesID szSalesID

これは以下の出力変数に、次のように保存されます。

出力変数名 出力変数値

[234567]

name John Smith

sourceID 400400

salesID Home Insurance

次に、署名付きリクエストの例を示します。

POST https://example.org/hooks

X-Hub-Signature: sha256=cd34f2878b4d5c1932cca961745d8e82ae23b436813ae8e9e2a0faf6f86a0dec

Accept: application/json

Content-Type: application/json

{
"Type": "flow_event",
"Created_at": "2019-03-18T18:02:23",
"Data":{
"source": "Sales",
"sourceID": "1234567890"
"disabled": "false"
}
}

次に、X-Hub-Signatureの計算に必要なC#コードの例を示します。

private const string Sha256Prefix = "sha256=";
private string GenerateSignature(string _payload, string _secret)
{
var secret = Encoding.UTF8.GetBytes(_secret);
var payloadBytes = Encoding.UTF8.GetBytes(_payload);


using (var hmacsha256 = new System.Security.Cryptography.HMACSHA256(secret))


{
var hash = hmacsha256.ComputeHash(payloadBytes);
var hashString = ToHexString(hash);
var signature = Sha256Prefix + hashString
}
return signature;
}


public static string ToHexString(byte[] bytes)
{
StringBuilder builder = new StringBuilder(bytes.Length * 2);
foreach (byte b in bytes)
{
builder.AppendFormat("{0:x2}", b);
}
return builder.ToString();
}

遷移点

遷移点

内容

完了

ウェブメッセージが送信され、応答を受信した場合。

タイムアウト

「タイムアウト」に指定されたタイムアウト期間内に応答が受信できなかった場合。

リクエスト失敗

リクエストにエラーがある場合。