> For the complete documentation index, see [llms.txt](https://docs.flexikanban.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flexikanban.ai/references/handlers/kanban-api-handler-types/open-cti-dial.md).

# Open CTI – Dial

Run the **Open CTI – Dial** action from a handler.

This action opens the **Salesforce Dialpad** and starts a call. It uses the CTI integration configured in your Salesforce org.

Use it to call a contact from a Kanban card in one click. Add a phone icon, link, or menu item to the card.

### Handlers and actions

* **Handler**: defines what happens when a user clicks a Kanban UI element.
* **Action**: an executable operation triggered by the handler.
* **Primary action here**: `Kanban API → Open CTI - Dial`.
* **Optional follow-ups**: configure extra actions on success or failure.

See [Configuring Handlers](/standard-kanban/tools/configuring-handlers.md).

### How it works

When the element is clicked:

1. The handler runs.
2. The handler executes the **Open CTI - Dial** action.
3. Flexi Kanban calls the **Salesforce Open CTI API**.
4. Salesforce opens the dialer with your parameters.

Your org must have a CTI provider configured. Examples: Amazon Connect, Five9, Aircall.

### Configuration

Configure the handler on the interactive element.

**Primary action type**\
`Kanban API`

**Primary action**\
`Open CTI - Dial`

**Action parameters**\
See below.

### Parameters

#### value

**Phone number to dial.**

This can be a field reference or a formula expression.

Example:

```
{Contact.Phone}
```

#### recordId

**Related Salesforce record Id.**

This allows the CTI provider to associate the call with a Salesforce record.

Common examples:

* Account Id
* Contact Id
* Opportunity Id
* Custom object Id

Example:

```
{Opportunity.AccountId}
```

#### params (optional)

**Additional Open CTI parameters in JSON format.**

This parameter can be used to pass extra configuration supported by your CTI provider.

Example:

```
{
  "autoDial": true
}
```

### Example Use Case

You can add a **phone icon to a Kanban card** that calls the related contact:

* Icon element → click handler → **Open CTI - Dial**
* value → `{Contact.Phone}`
* recordId → `{Contact.Id}`

When the icon is clicked, the Salesforce dialpad opens and the call can be initiated immediately.

### Notes

* The action requires a **configured CTI integration** in your Salesforce org.
* Behavior may vary depending on the **CTI provider implementation**.
* The `params` JSON must follow the format expected by the CTI provider.

***

## Best Practices

#### Use a clear call action element

Add a **phone icon or clearly labeled element** so users easily recognize that clicking the element will start a call.

Examples:

* Phone icon
* "Call Contact"
* "Dial"

#### Use the correct phone field

Always use the field that contains the **actual phone number used by your sales team**, such as:

* `{Contact.Phone}`
* `{Account.Phone}`
* `{Opportunity.ContactPhone}`

#### Associate calls with a record

Providing the **recordId parameter** helps your CTI provider correctly associate calls with Salesforce records and improves activity tracking.

Example:

```
{Contact.Id}
```

#### Hide the action if the phone number is empty

To prevent users from clicking a call action when no phone number exists, it is recommended to **hide the clickable element dynamically** when the phone value is blank.

You can achieve this by configuring the element's **CSS Styles** using a formula expression.

Use the **`display`** CSS property and return:

* `"none"` when the phone value is blank
* `"block"` when a phone number exists

Value Example for **`display`** CSS property :

```
FORMULA[ISBLANK({Opportunity.Account.Phone},'none', 'block')]
```

With this configuration:

* If the phone field is empty → the element will not be visible on the card
* If the phone field has a value → the element will appear and allow users to initiate a call

This approach helps ensure a **clean UI and prevents accidental clicks on non-functional call actions**.

<figure><img src="/files/EjXLXj9if6JR7VZ1Fesq" alt=""><figcaption></figcaption></figure>

***

## Troubleshooting

#### Dialpad does not open

Possible causes:

* No CTI provider is configured in Salesforce
* Open CTI is not enabled in the org
* The CTI softphone is not initialized in the current page

Verify that your **CTI integration is active and working in Salesforce**.

#### Phone number is not populated

Possible causes:

* The phone field is empty
* The field reference is incorrect
* The field is not included in the Kanban data query

Check that the field used in the `value` parameter **contains a valid phone number**.

#### Call is not associated with a record

Possible cause:

* `recordId` parameter is missing or incorrect.

Ensure the `recordId` parameter contains a **valid Salesforce record Id**.

Example:

```
{Contact.Id}
```

#### Additional CTI options do not work

Possible cause:

* The CTI provider may require specific JSON parameters.

Check your **CTI provider documentation** to confirm the supported parameters for Open CTI dial requests.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.flexikanban.ai/references/handlers/kanban-api-handler-types/open-cti-dial.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
