スクリプト クラスの構築
このユニットでは、変換ロジックを実装するための C# スクリプト クラスを構築する方法について説明します。
コネクタと共に使用されるカスタム コードは、次の要件を満している必要があります。
クラス名は Script にする必要があります。
Script クラスは、ScriptBase を実装する必要があります。
Script クラスは、ExecuteAsync という名前のメソッドを実装する必要があります。
カスタム コードの実行にかかる時間は 5 秒未満でなければなりません。
カスタム コードは合計 1 MB 未満にする必要があります。
スクリプト ファイルまたはクラスは 1 つのみサポートされます。
ScriptBase について
ScriptBase は、それをサポートするヘルパー メソッドおよびインターフェイスと共にカスタム コネクタ インフラストラクチャが提供するクラスです。 Script クラスは、この抽象クラスを基本クラスとして使用する必要があります。
public class Script : ScriptBase
{
public override Task<HttpResponseMessage> ExecuteAsync()
{
// Your code here
}
}
ExecuteAsync メソッドに加えて、このクラスには、シリアル化された JSON から StringContent オブジェクトを作成するために使用する CreateJsonContent ヘルパー メソッドも含まれています。 たとえば、次のコードでは、CreateJsonContent ヘルパー メソッドが、構築された変換済み応答から response.Content に入力しています。
// Wrap the original JSON object into a new JSON object with just one key ('wrapped')
var newResult = new JObject
{
["wrapped"] = result,
};
response.Content = CreateJsonContent(newResult.ToString());
ScriptBase クラスには、CancellationToken プロパティも含まれています。 SendAsync を使用して呼び出しを行う場合、CancellationToken プロパティを使用します。 要求に時間がかかりすぎる場合やキャンセルが要求された場合、メソッドは、CancellationToken が渡されたことを示します。
ScriptBase クラスには、処理されている要求にコンテキストを提供するためにロジックが使用できる Context パブリック プロパティもあります。 Context プロパティのタイプは IScriptContext であり、役に立つ次のプロパティとメソッドが用意されています。
OperationId - このプロパティは、ロジックが適切な変換を提供できるように、処理中の操作を識別する必要がある場合に最も役立ちます。
Request - このメソッドは、処理中の操作の HttpRequestMessage です。 要求を変換する必要がある場合、このメソッドを変更し、SendAsync に渡してその要求をサービスに送信します。
Logger - このメソッドは、コードから取得された診断情報をコネクタ操作のコード ログに記録するために使用できる ILogger のインスタンスを提供します。
SendAsync - このプロパティは、サービスに HTTP 要求を送信する場合に使用します。 このメソッドは、独自の HttpClient.SendAsync 呼び出しを行う代わりに使用する必要があります。
ローカルでのコードのコンパイル
コードをローカルでコンパイルすると、コンパイルの問題を簡単に特定することができます。 コードをローカルでコンパイルするには、ローカル コンピューターでプロジェクトを作成した後、ScriptBase クラスおよび IScriptContext インターフェイスのファイルを作成する必要 があります。 これらのファイルのコードは、サポートするクラスとインターフェイスの定義ドキュメントからコピーします。
ローカル開発には、GitHub の Microsoft/MTC_CustomConnectorCodeProject オープンソース プロジェクトも役立ちます。 このプロジェクトは、カスタム コード開発のためのコンソール プロジェクト事前設定を提供します。
サポートされる名前空間
実装するカスタム コードは、サポートされる一連の名前空間に限定されます。 これらの名前空間はほとんどの場合、一般的な System.* 名前空間のコレクション (ログや Newtonsoft JSON を含む) であり、カスタム コードでロジックをサポートするのに役立ちます。 現在サポートされている名前空間の詳しい一覧については、サポートされている名前空間を参照してください。
さらに、カスタム コードは他の .NET アセンブリを参照しない可能性があるため、アップロード済みのスクリプトに配置したロジックに限定されます。
他のカスタム コードの例
カスタム コードを使用して実行するさまざまな種類の変換について詳しくは、公開済み Microsoft Power Platform コネクタの例を参照してください。 PowerPlatformConnectors パブリック リポジトリで ScriptBase を検索することにより、カスタム コードを実装する現在のコネクタを確認できます。