## Documentation Index

Fetch the complete documentation index at: [/llms.txt](https://docs.cognigy.com/llms.txt)

Use this file to discover all available pages before exploring further.

With a Code Node, you can output a text message along with a data object by using the following `actions` functions:

```
api.output("<YOUR_TEXT>", {"key": "value"});
// OR
api.say("<YOUR_TEXT>", {"key": "value"});
```

The `data` parameter should take the JSON payload that defines the custom channel message:

```
const jsonPayload = {
 "_cognigy":{
  // Channel Specific Payload
 }
}

api.say("<YOUR_TEXT>", jsonPayload);
```

See the next sections for the required format.

### AI Default Channel

The Cognigy.AI default channel has a specific channel format which you can find more about at [AI default channel format](https://docs.cognigy.com/ai/for-developers/code/ai-default-channel-formats).

### Alexa

[Alexa Response JSON Reference](https://developer.amazon.com/de/docs/custom-skills/request-and-response-json-reference.html)

### Example

We’ll output a simple card to our contact by using the following snippet:

```
{
    "_cognigy": {
        "_alexa": {
            "response": {
                "shouldEndSession": false,
                "card":  {
                    "type": "Standard",
                    "title": "Title of the card",
                    "content": "Content of a simple card",
                    "text": "Text content for a standard card",
                    "image": {
                        "smallImageUrl": "https://url-to-small-card-image",
                        "largeImageUrl": "https://url-to-large-card-image"
                    }
                }
            }
        }
    }
}
```

### Messenger

[Messenger Messaging Reference](https://developers.facebook.com/docs/messenger-platform/send-messages) For the messenger you can send multiple templates by building a JSON object or by using the **facebook-bot-messenger module**. For further information go to their [GitHub Page](https://github.com/snlangsuan/facebook-bot-messenger#readme).

### Example

The following snippet will send a simple text message and a quick reply to the contact:

```
{
    "_cognigy": {
        "_facebook": {
          "message": {
            "text": "Hello World",
            "quick_replies": [
              {
                "content_type": "text",
                "condition": "",
                "title": "Hi",
                "image_url": "",
                "payload": "Hi"
              }
            ]
          }
        }
    }
}
```

Or you can use the **facebook-bot-messenger** module for building custom json. Here we’ll send quick replies to the contact:

```javascript
// use facebook-bot-messenger to compile reply
const builder = new MessengerPlatform.QuickRepliesMessageBuilder('Pick a color:');
builder.addImageOption('Red', 'DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_RED', 'http://petersfantastichats.com/img/red.png')
       .addImageOption('Green', 'DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_GREEN', 'http://petersfantastichats.com/img/green.png');

// output the reply
api.output("test", { "_cognigy": { "_facebook": {"message": builder.buildMessage() }} });
```

### Webchat

The Webchat uses the same format as the **Messenger** but instead of adding the `_facebook` property you have to add `_webchat`.

### Example

The following example sends a text message and a quick reply to the contact:

```
{
    "_cognigy": {
        "_webchat": {
            "message": {
                "text": "Hello World",
                "quick_replies": [
                    {
                        "content_type": "text",
                        "condition": "",
                        "title": "Hi",
                        "image_url": "",
                        "payload": "Hi"
                    }
                ]
            }
        }
    }
}
```

### AI

The default AI channel, which is always selected from the default, uses the almost same format as the webchat above. The only difference is that you type `_default` instead of `_webchat`.

### Example

The following example sends a text message and a quick reply to the contact:

```
{
    "_cognigy": {
        "_default": {
            "message": {
                "text": "Hello World",
                "quick_replies": [
                    {
                        "content_type": "text",
                        "condition": "",
                        "title": "Hi",
                        "image_url": "",
                        "payload": "Hi"
                    }
                ]
            }
        }
    }
}
```

### LINE

[LINE Messaging API](https://developers.line.me/en/reference/messaging-api/#template-messages)

### Example

The following outputs a simple confirm prompt to the contact:

```
{
    "_cognigy": {
        "_line": {
                "type": "template",
                "altText": "this is a confirm template",
                "template": {
                    "type": "confirm",
                    "text": "Are you sure?",
                    "actions": [
                        {
                            "type": "message",
                            "label": "Yes",
                            "text": "yes"
                        },
                        {
                            "type": "message",
                            "label": "No",
                            "text": "no"
                        }
                    ]
                }
        }
    }
}
```

### Smooch

[Smooch messaging API](https://docs.smooch.io/rest/?shell#message-types)

### Example

The following outputs a simple image to the end user:

```
{
    "role": "appMaker",
    "type": "image",
    "text": "Hello!",
    "mediaUrl": "http://example.org/image.jpg",
    "actions": [{
        "text": "More info",
        "type": "link",
        "uri": "http://example.org"
    }]
}
```

### RingCentral Engage

### Example

The following outputs a gallery with images to the end user. This example is quite interesting since one needs to [create an attachment for each image](https://developers.ringcentral.com/engage/digital/api-reference/Attachments/createAttachment) using the RingCentral Engage API. The returned **attachmentIds** are inserted in the **Custom JSON** below:

```
{
  "command": "structured-content",
  "body": "",
  "structuredContent": {
    "type": "carousel",
    "items": [
        {
            "attachment_id": "5f73470a0e69dc",
            "title": "This is the title",
            "url": "https://url-to-image.com",
            "subtitle": "This is the first subtitle",
            "items": [
                {
                    "type": "url",
                    "url": "https://www.cognigy.com/",
                    "title": "Visit Website"
                },
                {
                    "type": "reply",
                    "payload": "I want to select this one",
                    "title": "Select"
                }
            ]
        },
        "...": "..."
    ]
  }
}
```
