Skip to content

channel-io/app-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

app-tutorial

Hello, world!

This project is a tutorial to develop app-server of Channel Corp. App Store.

Thank you for visiting. 😁

Index
Prerequisite -
Installation -
Build # Build the whole project
# Build only the wam
APIs # ping
# functions
# wam(static)

Prerequisite

Installation

It is available to download the necessary packages for the project by running one of the following commands:

  1. Use makefile.
$ make init
  1. Use go cli.
$ go mod tidy

Build

Build the whole project

$ make build # it builds wam, either.

Build only wam

$ make build-wam

Run

Configuration

Before running the program, make sure to check the configuration file.

You must prepare the metadata of the app by registering one to Channel App Store.

stage: development # name of the env

appId: # app id registered in advance
appSecret: # app secret issued in advance

api:
  public:
    http:
      port: 3022 # port number of the server

appStore:
  baseUrl: # api endpoint of the Channel App Store

bot:
  name: AppTutorialBot # bot name to write messages in groups

Run the program

$ STAGE="your stage" make dev

The default setting for the stage is development.

APIs

ping

METHOD PATH
GET /ping

Request

(empty)

Response

pong

functions

METHOD PATH
PUT /functions

This api is to request general functions defined in the project.

You must register it as a functionUrl of the app.

Note that context in the function request is automatically full by the Channel App Store.

Request

NOTE:The values in the context field of the request body will be automatically populated by the App Store.

  1. tutorial (to prepare wam arguments before opening the wam)
{
    "method": "tutorial",
    "context": {
        "channel": {
            "id": "channel id which calls the wam"
        },
        "caller": {
            "type": "manager",
            "id": "manager id which calls the wam"
        }
    }
}
  1. sendAsBot

sendAsBot is a function to write message as a bot.

You can set the name of the bot with configuration files.

{
    "method": "sendAsBot",
    "params": {
        "input": {
            "groupId": "group id to write a message",
            "rootMessageId": "thread id",
            "broadcast": false
        }
    },
    "context": {
        "channel": {
            "id": "channel id which calls the wam"
        },
        "caller": {
            "type": "manager",
            "id": "manager id which calls the wam"
        }
    }
}

Response

Success

200 OK
  1. tutorial
{
    "result": {
        "type": "wam",
        "attributes": {
            "appId": "app id",
            "name": "tutorial",
            "wamArgs": {
                "managerId": "4761",
                "message": "This is a test message sent by a manager."
            }
        }
    }
}
  1. sendAsBot
{
  "result": {
        "type": "string",
        "attributes": {}
  }
}

Failure

200 OK
{
    "error": {
        "type": "",
        "message": "the reason of the failure"
    }
}

Note that both the success and the failure return 200 OK for each request.

wam

METHOD PATH
- /resource/wam/tutorial

This endpoint serves a static page of the wam.

You must register it(/resource/wam) as a wamUrl of the app.

Response

The wam written in HTML.