Workato：Custom Connector作成

# 1. はじめに

WorkatoのCustom Connector作成手順をサンプルとして後述に記載します。
Custom Connectorというと作成に多くの時間がかかりそうと思われますが、Workatoのドキュメントをもとに簡単に作成ができます。
是非試してもらえればと思います。

# 2. 新規コネクターの作成

①「Tools」⇒「Connector SDK」の順にクリックします。
![Image001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2266312/8f8c83b4-b053-1a3a-8f1e-895ea0eaa5f8.png)

②「Connector SDK」画面より、「New connector」ボタンをクリックしConnectorを作成します。
![Image002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2266312/aa19c031-ff6e-0378-e5e3-6a03c6f91b48.png)

③connector名を入力します。
![Image003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2266312/7375345a-954e-0392-693e-4f6b4084c806.png)


新規コネクターの作成方法は以下URLに記載されています。
・Using the Workato Connector SDK
https://docs.workato.com/developing-connectors/sdk/quickstart.html#using-the-workato-connector-sdk


# 3. コネクションの作成および動作確認

①下記参考情報内のサンプルコードを「SourceCode」に設定し「Save」ボタンをクリックします。

・Connector Walkthrough
https://docs.workato.com/developing-connectors/sdk/guides/walkthrough.html#getting-started
Creating a connection


```
{
  title: 'Star Wars information',
  
  connection: {
    fields:
    [
      {
        name: "object",
        hint: "Type in the object you would like to test your connection with",
      }
    ]
  },
  
  test: lambda do |connection|
    get("https://swapi.dev/api/people/1")
  end,
  
  # More code below but hidden for now!
}
```


|key|説明|
|---|---|
|connection|コネクターのコネクションを定義|
|fields|コネクション内のフィールドを定義|


②「field」に任意の文字を入力後、「Connect」ボタンをクリックし、接続されることを確認します。
![Image005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2266312/0c431d76-7ed9-9be2-8ae1-1a274ae450f3.png)
![Image006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2266312/ea44c7a1-f00d-dcd3-4dda-5c1f7ee1c350.png)


# 4. アクションの作成および動作確認

①下記参考情報内のサンプルコードを「SourceCode」に設定し「Save」ボタンをクリックします。

・Connector Walkthrough
https://docs.workato.com/developing-connectors/sdk/guides/walkthrough.html
Creating an action



```
{
  title: 'Star Wars information',
   
  connection: {
    fields:
    [
      {
        name: "object",
        hint: "Type in the object you would like to test your connection with",
      }
    ]
  },
  
  test: lambda do |connection|
    get("https://swapi.dev/api/people/1")
  end,
   
  actions: {
    get_person_by_id: {                
      input_fields: lambda do
        [
          {
            name: 'id',
            label: 'Person ID',
            type: 'integer',
            optional: false
          }
        ]
      end,
   
      execute: lambda do |connection, input|
        get("https://swapi.dev/api/people/#{input["id"]}/")
      end,
   
      output_fields: lambda do
        [
          {
            name: "name",
            label: "Person name",
            type: "string"
          },
          {
            name: "vehicles",
            label: "Vehicles",
            type: "array",
            of: "string"
          }
        ]
      end
    },
  },
}
```



|key|説明|
|---|---|
|input_fields|アクション構成時の入力フィールドを指定|
|execute|HTTPリクエスト、リクエストの送信先URL等を指定|
|output_fields|アクションから返されるデータピルを宣言|

②作成したアクション「Get person by ID」をクリックします。
![Image007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2266312/281f6320-aece-7567-5068-1ed7ef0dba57.png)

③「Person ID」入力項目に「1」を設定し、「Test action」ボタンをクリックします。
![Image008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2266312/7880a502-a52c-83d6-eee7-c45e1f100448.png)


④右側の「Console」の「Output」より取得されたデータを確認します。
![Image009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2266312/6cdead37-32ff-2a41-51fe-6417d794f46d.png)



# 5. httpbinサービスを利用して動作確認実施


「httpbin」はHTTPリクエストとレスポンスの確認に便利なWebサービスです。
BASIC認証での接続をテストもできますので当サービスを使用して認証、様々なアクション(GET,POSTなど)の動作が確認可能です。



・「httpbin」サービスの参考情報

httpbin を使って HTTP の検証をする
https://qiita.com/toshihirock/items/c7279fdcf808d3128261

APIクライアント開発時のモックに使えるhttpbinの紹介
https://qiita.com/sameyasu/items/adacceb8a1bee893599b



・「Workato CustomConnectorの基本認証」の参考情報

How-to Guide - Basic Authentication
https://docs.workato.com/developing-connectors/sdk/guides/authentication/basic-authentication.html#how-to-guide-basic-authentication



①サンプルコードの実施

以下にサンプルコードを記載します。認証、アクション(GET)の動作確認が可能です。

```
{
  title: 'httpbin Connector',
   
  connection: {
    fields: [
      {
        name: 'username',
        optional: false,
        hint: 'httpbin user name'
      },
      {
        name: 'password',
        optional: false,
        control_type: 'password',
        hint: 'httpbin password'
      }
    ],
   
    authorization: {
      type: 'basic_auth',
      apply: lambda do |connection|
        user(connection['username'])
        password(connection['password'])
      end
    },
       
    base_uri: lambda do |connection|
      "https://httpbin.org"
    end
      
   
  },
   
  test: lambda do |connection|
       get("/basic-auth/admin/admin")
  end,
    
  actions: {
    get: {               
    
  
  
      input_fields: lambda do
        [
          {
            name: 'param1',
            label: 'param1',
            type: 'string',
            optional: false
          }
  
        ]
      end,
        
      execute: lambda do |connection,input|
        get("/get",input)
      end,
    
      output_fields: lambda do
        [
          {
            name: "param1",
            label: "param1",
            type: "string"
          }
        ]
      end
    },
  },
   
}
```
![Image010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2266312/1203dc6a-44b0-c23d-afc1-1feb1edd6b24.png)


# 6. おわりに

Custom Connectorが、Workatoのドキュメントをもとに簡単に作成ができることを実感できましたでしょうか。
Workatoのドキュメントにいろいろな情報が存在するので是非他にも試してもらえればと思います。