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"
}