Preview handler
The preview handler is used to expand the link to display a richer data format. The preview handler will be triggered either when a user enters the link in the composer or after they send it in the chat. A map with unfurl card details will be returned in the response.

You will get the following attributes when the preview handler is executed.
| Attribute | Description |
| domain | Domain which matches the one handled by the extension |
| url | Link sent by the user |
| chat | Details of the chat where the link was entered or sent |
| user | Details of the user who entered or sent the link |
The unfurled card response can have the following attributes
| Attribute | Type | Description |
| title* | String | Title for the unfurled card (max length : 500) |
| type* | String | The type of unfurl. Allowed Values: link | photo | video | rich |
| provider_url* | String | Resource provider url. (max length: 1000) |
| description | String | Description for the unfurl card, maximum length 3000 |
| provider_name | String | Resource provider name. (max length: 100) |
| favicon_url | String | Resource provider fav icon. (max length: 1000) |
| thumbnail_url | String | Thumbnail url. (max length: 1000). Supported for link, richand video type |
| actions | Array | Butons actions in unfurl card. Supported for link and rich type |
| dynamic_actions | Boolean | Used to add menu icon to the unfurl card. Allowed values: True | False. Supported for link and rich type |
| fields | JSON Object | Option to render fields in unfurl card. |
| Attribute | Type | Description |
| type* | String | The type of action. Allowed value: button |
| label* | String | Button label. (max length : 100) |
| hint | String | Button hint. (max length: 250) |
| style | String | To denote the style(positive/negative) of the button. Allowed values: + | - |
| confirm | JSON Object | Properties of the confirmation dialog box before the action is executed. It can be included based on the requirement. |
| params | JSON Object | Dynamic key value pair for reference. A Maximum of 10 keys with 100 character value can be passed. |
| Attribute | Type | Description |
| data* | Array | Fields data. (max 10 fields) |
| styles | JSON Object | Styles for fields |
| Attribute | Type | Description |
| label* | String | Field label. (max length : 100) |
| value* | String | Field value. (max length: 500) |
| Attribute | Type | Description |
| short* | Boolean | Option to short the given fields based on key |
Types specific additional mandatory keys:
Rich, Video:
| Attribute | Type | Description |
| iframe_url* | String | Iframe url to play video or render webpage. (max length: 1000) |
Photo:
| Attribute | Type | Description |
| url* | String | Image url. (max length: 1000) |
Sample code:
return {
"title": "Graphics Artist | Notion",
"type": "link",
"provider_url": "https://www.notion.so/",
"faviconlink": "https://www.notion.so/front-static/favicon.ico",
"thumbnail_url": "https://images.unsplash.com/photo-1613909207039-6b173b755cc1?ixlib=rb-4.0.3&q=85&fm=jpg&crop=entropy&cs=srgb",
"description": "Notion - A new tool that blends your everyday work apps into one. It's the all-in-one workspace for you and your team",
"fields": {
"data": [
{
"label": "Parent Database",
"value": "[Vendor Management](https://www.notion.so/demoid1234)"
},
{
"label": "Type",
"value": "Page"
},
{
"label": "Created By",
"value": "John Doe (john.doe@zoho.com)"
}
]
},
"actions": [
{
"hint": "Add a Block of information to the Page.",
"style": "+",
"label": "Add Block",
"type": "button",
"params": {
"page_id": "demopageid123"
}
},
{
"hint": "Add a subpage to the page",
"label": "Add Subpage",
"type": "button",
"params": {
"page_id": "demopageid124"
}
}
],
"dynamic_actions": true
};