チャネルトークでアプリの機能をリクエストするために使用するプロトコルです。HTTP上でJSON bodyを伴って呼び出され、bodyのmethodとparamsを用いて呼び出すRPCの名前とパラメータを識別します。アプリとの間で送受信されるすべてのリクエストはFunctionスキーマに従って送信されます。
Functionが呼び出された場合、開発者ページに登録されたFunction EndpointにHTTP PUTリクエストが送信されます。
Function Endpointは「アプリ設定」→「基本設定」→「サーバー設定」で登録できます。
リクエストを受信した場合、Signing Keyを発行してリクエストが正当なソース(チャネルトーク)からのものか検証できます。
アプリサーバーでは、これらのリクエストを処理しレスポンスできるHTTP APIをFunction Endpoint上で提供する必要があります。
method | url | notes |
|---|---|---|
PUT | {Function Endpoint} | チャネルトーク→アプリサーバーへ呼び出されるリクエストです |
name | type | notes |
|---|---|---|
method | string | functionで呼び出す特定の機能の名前(rpc name) |
params | array or object | function body.functionに送信するjsonデータ |
context | object | functionが呼び出されたコンテキスト情報。以下に記述 |
contextはfunctionの呼び出し元情報を保持しています。
後述するx-Signature検証を実行する場合、contextに保持された情報は信頼可能です。
field | type | notes |
|---|---|---|
channel | object | 呼び出されたチャネルID |
caller | object | `type`: 呼び出し元のタイプ - `app`, `user`, `manager` `id`:呼び出し元のID |
notes | name | required |
|---|---|---|
Signing Keyを利用したHMAC署名 | X-Signature | true |
signing keyを16進数バイトでencodeします。
request bodyはUTF-8 bytesでencodeします。
1番で取得したシークレットキーとHMAC SHA-256関数で、2番で取得した値のダイジェストを算出します。
ダイジェストをbase64でencodeします。
ヘッダーのX-Signature値と4番で取得した値が同じか比較します。
body
field | type | notes |
|---|---|---|
result | object or array | リクエスト処理成功時のレスポンス値を持つフィールド |
error | object | リクエストエラー時のエラーオブジェクト |
成功の有無に応じて result または error を返す必要があります。
field | type | notes |
|---|---|---|
type | string | エラータイプ |
message | string | エラーメッセージ |
アプリから他のアプリのfunctionも呼び出すことができます。
呼び出すアプリのIDと前述のFunction形式を用いて、チャネルトークAPIサーバーへリクエストを送信します。
method | url | notes |
|---|---|---|
PUT | app-store-api.channel.io/general/v1/apps/{appID}/functions | チャネルにインストールされた他のアプリの関数を呼び出します |
name | notes | required |
|---|---|---|
x-access-token | 認証と権限で発行されたチャネルトークン | true |
field | type | notes |
|---|---|---|
method | string | functionで呼び出す機能の名前(rpc name) |
params | array or object | function body.functionに送信するjsonデータ |
成功の有無に応じて result または error が返されます。
field | type | notes |
|---|---|---|
result | array or object | リクエスト処理成功時のレスポンス値を持つフィールド |
error | object | リクエストエラー時のエラーオブジェクト |
field | type | notes |
|---|---|---|
type | string | エラータイプ |
message | string | エラーメッセージ |
Native Functionとは、チャネルトークで基本提供されるFunctionのリストです。接客チャットにメッセージを書き込んだり、マネージャーの情報を照会するなど、チャネルトークリソースを操作するために使用します。アプリでNative Functionを呼び出す方法は以下の通りです。
url | app-store-api.channel.io/general/v1/native/functions |
method | PUT |
notes | チャネルトーク Native Function を呼び出します |
name | notes | required |
|---|---|---|
x-access-token | 認証と権限で発行されたチャネルトークン | true |
field | type | notes |
|---|---|---|
method | string | functionで呼び出す機能の名前(rpc name) |
params | array or object | function body.functionに送信するjsonデータ |
成功の有無に応じて result または error が返されます。
field | type | notes |
|---|---|---|
result | object | リクエスト処理成功時のレスポンス値を持つフィールド |
error | object | リクエストエラー時のエラーオブジェクト |
field | type | notes |
|---|---|---|
type | string | エラータイプ |
message | string | エラーメッセージ |
App
registerCommands
Channel
writeGroupMessage
writeUserChatMessage
getManager
batchGetManagers
searchManagers
getUserChat
getUser
getChannel
manageUserChat
Manager
writeGroupMessageAsManager
writeUserChatMessageAsManager
writeDirectChatMessageAsManager
User
writeUserChatMessageAsUser