# Message-Proxy to Webhook Payload
| property | type | required | desc |
| ---------- | ------ | -------- | ---------------------------------------------------- |
| events | array | required | |
| chatObject | object | required | ```chatObject``` |
| to.userId | string | required | format = tp-{projectId}-native-{userId from Request} |
| messages | array | required | array of ```message``` |
```
{
"events: [{
"chatObject": {...},
"to": {
"userId": "tp-2-native-11037#1581565331651"
},
"messages": [
{...},
{...},
{...}
]
}]
}
```
## chatObject
| property | type | required | desc |
| --------- | ------- | -------- | ------------------------------------------ |
| id | string | required | chatObject id in database |
| from | string | required | format = cb-{projectId} |
| roomId | string | required | room id in database |
| timeStamp | integer | required | the number of milliseconds from 1970-01-01 |
```
{
"id": "5d46b3e1-a3cb-4bd7-b276-1d51a906fe5a",
"from": "cb-2",
"roomId": "eddc1552-ebd9-4bbf-bb43-fa107fd52fbd",
"timeStamp": 1581565403332
}
```
## message types
* text
* text card
* media card
* card carousel
## message details
### text
| property | type | required | desc |
| ---------- | ------ | -------- | ----------------- |
| type | string | required | ```text``` |
| text | string | required | print content |
| extensions | object | required | extensions object |
| customPayload | object | optional | custom payload |
```
{
"type": "text",
"text": "hello world",
"extensions": {
showFeedbackButtons: true,
},
}
```
### text card
| property | type | required | desc |
| ------------- | ------ | -------- | --------------------------------------------- |
| type | string | required | ```textCard``` |
| headerText | string | opt | header text |
| bodyText | string | opt | content text |
| defaultAction | object | opt | action of click card or image. action object |
| extensions | object | required | extensions object |
| actions | array | required | array of action objects. max: 3 |
| customPayload | object | optional | custom payload |
```
{
"type": "textCard",
"headerText": "This is an awesome card!",
"bodyText": "First line\nSecond line\nThird line...etc.",
"extensions": {
showFeedbackButtons: true,
},
"defaultAction": {
"type": "postback",
"payload": "PAYLOAD_IN_PLAIN_TEXT(while clicking image)"
},
"actions": [
{...},
{...},
{...}
]
}
```
### media card
| property | type | required | desc |
| ------------- | ------ | -------- | --------------------------------------------- |
| type | string | required | ```mediaCard``` |
| headerText | string | opt | header text |
| bodyText | string | opt | content text |
| imageSrc | string | required | image url or base64 string |
| defaultAction | object | opt | action of click card or image. action object |
| extensions | object | required | extensions object |
| actions | array | required | array of action objects. max: 3 |
| customPayload | object | optional | custom payload |
```
{
"type": "mediaCard",
"headerText": "This is an awesome card!",
"imageSrc": "https://aabb.com/abcde.png",
"bodyText": "First line\nSecond line\nThird line...etc.",
"extensions": {
},
"defaultAction": {
"type": "postback",
"payload": "PAYLOAD_IN_PLAIN_TEXT(while clicking image)"
},
"actions": [
{...},
{...},
{...}
]
}
```
### card carousel
| property | type | required | desc |
| -------- | ------ | -------- | -------------------------------------------------- |
| type | string | required | ```cardCarousel``` |
| elements | array | required | array of textCard, mediaCard or chartCard. max: 10 |
| customPayload | object | optional | custom payload |
```
{
"type": "cardCarousel",
"elements": [
{...},
{...}
]
}
```
# action types
* d8
- postback
- uri
- message
* line
- postback
- message
- uri
- date time picker
- camera
- camera roll
- location
* facebook
- web_url
- postback
- element_share
- payment
- phone_number
- account_link
- account_unlink
- game_play
## action details
### postback
| property | type | required | desc |
| -------- | ------ | -------- | ------------------------------------------------------------------ |
| type | string | required | ```postback``` |
| payload | string | required | string returned via webhook. max: 300 |
| label | string | required | label for the action. max: 20 |
| text | string | required | text displayed in the chat as a message sent by the user. max: 300 |
```
{
"type":"postback",
"payload":"action=buy&itemid=111",
"label":"Buy",
"text":"Buy"
}
```
### uri
| property | type | required | desc |
| -------- | ------ | -------- | -------------------------------------------------- |
| type | string | required | ```uri``` |
| label | string | required | label for the action. max: 20 |
| uri | string | required | URI opened when the action is performed. max: 1000 |
```
{
"type":"uri",
"uri":"http://example.com/page/222",
"label":"View details"
}
```
### message
| property | type | required | desc |
| -------- | ------ | -------- | ------------------------------------------------ |
| type | string | required | ```message``` |
| label | string | required | label for the action. max: 20 |
| text | string | required | Text sent when the action is performed. max: 300 |
```
{
"type":"message",
"label":"Yes",
"text":"Yes"
}
```
# extensions object
| property | type | required | desc |
| ------------------- | ------- | -------- | -------------------------------- |
| showFeedbackButtons | boolean | opt | whether to show feedback buttons |
```
{
"showFeedbackButtons" : false,
}
```
# references
* [facebook](https://developers.facebook.com/docs/messenger-platform/reference/template/generic)
* [line](https://developers.line.biz/en/reference/messaging-api/#carousel)
* [facebook action types](https://developers.facebook.com/docs/messenger-platform/send-messages/buttons)
* [line action types](https://developers.line.biz/en/reference/messaging-api/#action-objects)
* [facebook message components](https://developers.facebook.com/docs/messenger-platform/introduction/conversation-components)
* [facebook message definition](https://developers.facebook.com/docs/messenger-platform/send-messages)
* [line message types](https://developers.line.biz/en/docs/messaging-api/message-types/)