Standard message components
CSML message components all have a matching message format for client use in regular JSON
. They can be extended by adding additional properties to the content
wrapper.
Copy > Text()
{
"content": {
"text": "message"
},
"content_type": "text"
}
Copy > Typing()
{
"content": {
"duration": 1000
},
"content_type": "typing"
}
Copy > Wait()
{
"content": {
"duration": 1000
},
"content_type": "wait"
}
Copy > Url()
{
"content": {
"url": "https://example.com",
"title": "title",
"text": "text"
},
"content_type": "url"
}
Copy > Image()
{
"content": {
"url": "https://example.com/image.jpg",
},
"content_type": "image"
}
Copy > Audio()
{
"content": {
"url": "https://example.com/audio.mp3",
},
"content_type": "audio"
}
Copy > Video()
{
"content": {
"url": "https://example.com/video.mp4",
},
"content_type": "video"
}
Copy > File()
{
"content": {
"url": "https://example.com/video.mp4",
},
"content_type": "file"
}
Copy > Button()
{
"content": {
"title": "Button title",
"payload": "Button payload"
},
"content_type": "button"
}
Copy > Payload()
{
"content": {
"payload": "Custom payload"
},
"content_type": "payload"
}
Copy > Question()
{
"content": {
"title": "Question",
"buttons": [Button]
},
"content_type": "question"
}
Component payloads can be included into one another seamlessly. For example:
Copy // CSML
say Question(
"Where is Brian",
buttons = [
Button("In the kitchen"),
Button("Somewhere else"),
]
)
// JSON output
{
"content": {
"title": "Where is Brian",
"buttons": [
{
"content_type": "button",
"content": {
"title": "In the kitchen",
}
},
{
"content_type": "button",
"content": {
"title": "Somewhere else",
}
},
],
},
"content_type": "question"
}