# Dynamic Content Action

This action will display dynamic chat elements by downloading a standard Xenioo Action Model JSON from any URL or translating it directly from any conversation variable.

![](/files/-LgqKoNL_y8lgwn9z-yd)

### Settings

The action uses the following settings:

| Setting                             | Description                                                    | [Parsed](/actions-and-operations/dynamic-parsing.md) |
| ----------------------------------- | -------------------------------------------------------------- | ---------------------------------------------------- |
| Xenioo Action Model URL             | The Url from which the dynamic content data will be retrieved. | :white\_check\_mark:                                 |
| Xenioo Action Model Variable Source | The variable that holds the dynamic content model.             | :white\_check\_mark:                                 |

### Remarks

The Dynamic Content Action data model is similar to the [Dynamic Carousel Action](/actions-and-operations/cards/xenioo.bots.actions.base.dynamicgenerictemplateaction.md) one (which is actually using a subset of it). Two more object types are added to extend this action support for [Text ](/actions-and-operations/content/xenioo.bots.actions.base.textaction.md)and [Buttons Cards](/actions-and-operations/cards/buttons-card-template-action.md).

The following source shows a brief sample of a complete dynamic content JSON:

```javascript
{
  "items":[
      {
      		"type":"text",
      		"text":"hello there!"
      },
      {
      		"type":"carousel",
	        "title": "Chevrolet Corvette",
	        "subtitle": "Buy your Chevrolet Corvette!",
	        "image_url":"https://someserver.com/corvette.jpg",
		"view_size":"compact",
	        "buttons":[
	          {
			"type":"postback",
			"payload": "buy_corvette",
		        "text":"Buy Now"
	          },
	          {
			"type":"url",
			"url": "https://www.chevrolet.com",
			"text":"Visit Website",
			"view_size":"full"
	          }
          ]
      }
  ]
}
```

The content *type* field values currently supported are text, carousel and buttonscard.

The model also accept both [Variables and Tags](/actions-and-operations/variables-and-tags.md) injection so that your remote service can also push specific values inside the chatbot runtime automatically. The injection happens with the same model used by [On Demand Broadcast](/broadcast/scheduling/basic-settings/on-demand.md) and, extending the previous example, may look similar to the following:

```javascript
{
  "items":[
      {
      		"type":"text",
      		"text":"hello there!"
      },
      {
      		"type":"carousel",
	        "title": "Chevrolet Corvette",
	        "subtitle": "Buy your Chevrolet Corvette!",
	        "image_url":"https://someserver.com/corvette.jpg",
		"view_size":"compact",
	        "buttons":[
	          {
			"type":"postback",
			"payload": "buy_corvette",
	                "text":"Buy Now"
	          },
	          {
                        "type":"url",
                        "url": "https://www.chevrolet.com",
                        "text":"Visit Website",
                        "view_size":"full"
	          }
          ]
      }
  ],
  "variables":[
  		{
                    "name":"user_data",
                    "value":"some variable value",
                    "mode":0
  		}
  ],
  "tags":[
  		{
  	            "name":"VIP_USER",
                    "mode":0
  		}
  ]
}
```

The mode setting for variables and tags may have one of the following values:

| Value | Description                                                                                                                                                              |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 0     | Replace. The current value is replaced by the given value                                                                                                                |
| 1     | Append. The given value is [appended ](/actions-and-operations/profile/xenioo.bots.actions.base.setvariableaction.md)to the current value. This is not supported by tags |
| 2     | Delete. The value and the associated tag or variable and deleted from the current runtime instance.                                                                      |

### Trigger

This action has no triggers.

### Variables

When carousel or buttons card content is used, this action will produce the following variables:

| Variable      | Description                              |
| ------------- | ---------------------------------------- |
| last\_command | Contains the last clicked button payload |

### Availability

Channel specific availability follows the table below:

| Channel          | Availability     |
| ---------------- | ---------------- |
| Facebook         | Fully Available. |
| WhatsApp         | Fully Available. |
| Telegram         | Fully Available. |
| Web              | Fully Available. |
| Alexa            | Fully Available. |
| Google Assistant | Fully Available. |
| Slack            | Fully Available. |
| API              | Fully Available. |

This action can be used only inside interactions and not as child of other actions. This action requires a [Premium Account](/basic-concepts/your-account/upgrading-from-free.md) to be used on a live chatbot.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs10.xenioo.com/actions-and-operations/integration/xenioo.bots.actions.base.dynamicreplyaction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
