Categories:
HTML5 attachments
Types of HTML attachments for Microsoft Bot Framework
Introduction
HTML attachments are a set of models whose main property is that the content of the elements to render are composed of HTML5 tags.
Aura’s HTML5 attachment template is used to send HTML5 snippets as a response template.
Custom Attachment Model
The custom attachment model contains a free format model.
Bot Framework Attachment Properties
- Properties marked in bold are mandatory.
- Properties marked in italics are optional.
| Property | Type | Description |
|---|---|---|
| contentType | string | Content type name. Value: application/vnd.telefonica.aura.html.custom |
| content | AuraHtmlCustomContent | Model of the object where the HTML5 is |
| version | string | Attachment model version model |
| name | string | Attachment name (optional) |
Aura HTML Custom Content
| Property | Type | Description |
|---|---|---|
| containers | HTMLContainer[] | Array of containers where the HTML data is sent |
HTML container
The HTML container contains an identifier and the content of HTML.
Content may be self-contained or referenced. If it is self-contained, the property data will contain the HTML. Otherwise, the property url-data will contain the URL to download the HTML.
| Property | Type | Description |
|---|---|---|
| id | string | Identifier of tag where the content data will be placed. |
| encoded | EncodedFormat | How the HTML5 code is encoded in data properties. Values: none, base64 or zip |
| data | string | HTML5 data. |
| url-data | string | URL where the HTML to assign to the given container id should be downloaded. The encoded field in this case is ignored. |
| content-type | string | Type of source: html, javascript, css or json. - If url-data has a URL, the AuraSDK will insert: . <link href="[url-data]" rel="stylesheet" type="text/css" /> for css. . <script src="[url-data]"></script> for js. - If you do not use the Aura SDK, you must insert it manually. Default value: html Note: Javascript content cannot be unloaded once loaded into the browser, unless you reload the page or iframe. |
Encoded Formats
| Property | Description |
|---|---|
| none | The data is sent in HTML format |
| base64 | The data is encoded in Base64 |
| zip | The data is compressed in zip format |
Example
{
"attachments": [
{
"contentType": "application/vnd.telefonica.aura.html.custom",
"version": "1.0.0",
"content": {
"containers": [
{
"id": "id-background",
"url-data":"https://telepizza.com/containers/background?id=334"
},
{
"id": "id-footer",
"encoded": "base64",
"data":"PGgyPkhUTUwgTGlua3M8L2gyPgo8cD5IVE1MIGxpbmtzIGFyZSBkZWZpbmVkIHdpdGggdGhlIGEgdGFnOjwvcD4KCjxhIGhyZWY9Imh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20iPlRoaXMgaXMgYSBsaW5rPC9hPg=="
}
]
}
}
]
}
Building Aura response through HTML5
To include HTML content in Aura’s responses, two conditions must be satisfied:
- First, generate a response with an attachment whose content has the HTML code.
- Second, the client must support the model of this type of attachments.
Check how to add attachments into messages in MS Bot Framework.
Generate Response with an HTML5 attachment
In order to generate responses with HTML content, it is necessary to follow the model created for it: Attachment Models.
To do this, simply generate an message attachment with the new model.
For example, if we want to send the word “Hello World” in HTML format:
- Generate the necessary HTML code: Hello World! .
- Include this code inside the model and assign a container to it, so that the client knows in which part of the webpage he must go. The assignation of a container is mandatory and needs the target Id of HTML element where the content will be rendered.
var message = new Message(session)
.addAttachment({
contentType: "application/vnd.telefonica.aura.html.custom",
version: "1.0.0"
content: {
containers:[
{
id: "aura-body",
data: "<span> Hello World! <span>"
}
]
}
});
The content can be encoded to avoid problems with HTML code characters or to compress content if it is large. To inform the client of the type of encoding, use the encoded property.
var message = new Message(session)
.addAttachment({
contentType: "application/vnd.telefonica.aura.html.custom",
version: "1.0.0"
content: {
containers:[
{
id: "aura-body",
encoded: "base64",
data: "PHNwYW4+IEhlbGxvIFdvcmxkISA8c3Bhbj4="
}
]
}
});