VoxAide (Preview)
Place AI voice calls to contacts for a configured reason, and read each call's outcome. Pairs with the VoxAide for Dynamics 365 managed solution. Authenticate with a VoxAide API key (Settings → Integrations → Dynamics 365).
This connector is available in the following products and regions:
| Service | Class | Regions |
|---|---|---|
| Copilot Studio | Premium | All Power Automate regions except the following: - US Government (GCC) - US Government (GCC High) - China Cloud operated by 21Vianet - US Department of Defense (DoD) |
| Logic Apps | Standard | All Logic Apps regions except the following: - Azure Government regions - Azure China regions - US Department of Defense (DoD) |
| Power Apps | Premium | All Power Apps regions except the following: - US Government (GCC) - US Government (GCC High) - China Cloud operated by 21Vianet - US Department of Defense (DoD) |
| Power Automate | Premium | All Power Automate regions except the following: - US Government (GCC) - US Government (GCC High) - China Cloud operated by 21Vianet - US Department of Defense (DoD) |
| Contact | |
|---|---|
| Name | VoxAide Support |
| URL | https://voxaide.co |
| support@voxaide.co |
| Connector Metadata | |
|---|---|
| Publisher | Sovereign IT Solutions Limited |
| Website | https://voxaide.co |
| Privacy policy | https://voxaide.co/privacy |
| Categories | Communication;Sales and CRM |
VoxAide
VoxAide places AI voice calls to your contacts for a reason you choose, asks the questions you set, and returns each call's outcome — a summary, whether an issue was raised, the duration and status. Use it to build Power Automate flows that call people automatically (check-ins, confirmations, reminders, reference checks) and write the result back to your systems.
Publisher
VoxAide (Sovereign IT Solutions Ltd)
Prerequisites
- A VoxAide account (sign up at https://voxaide.co). Calls draw on your VoxAide plan or pay‑as‑you‑go balance.
- The calling capability enabled on your VoxAide organization.
- A Power Automate, Power Apps or Logic Apps plan that supports premium/custom connectors.
How to get credentials
VoxAide authenticates with an API key.
- Sign in to VoxAide at https://voxaide.co.
- Go to Settings → Integrations.
- Under the connector section, choose Generate key and copy the key (it begins with
vox_live_). It is shown once. - In Power Automate, when you create the VoxAide connection, paste the key into the API Key field.
You can revoke a key at any time from the same screen.
Supported operations
| Operation | Description |
|---|---|
| Place a call | Place an AI voice call now to a contact for a given reason. |
| List calls | List recent calls, newest first; poll with since for updates. |
| Get a call | Get a single call and its outcome once concluded. |
| List call reasons | List the call reasons configured for your organization. |
| Create a call reason | Create a new reason with a name and the questions to ask. |
| Get a call reason | Get a single reason by its identifier. |
| Update a call reason | Update a reason's name, schedule or questions. |
| Test connection | Verify the API key (used by the connection test). |
A typical flow: Place a call with a reason and a contact's phone number → poll Get a call (or List calls) until status is completed/failed/declined → use the returned summary, outcome and issueRaised in your flow.
Deployment instructions
The connector files are apiDefinition.swagger.json, apiProperties.json and icon.png. To create the connector in your own environment with the Power Platform Connectors CLI:
pip install paconn
paconn login
paconn create --api-def apiDefinition.swagger.json --api-prop apiProperties.json --icon icon.png
Known issues and limitations
- Phone numbers must be in E.164 format (for example
+14155550123). - Placing a call consumes plan allowance or pay‑as‑you‑go credit; a call is billed when it is placed, not when it completes.
- Calls are placed asynchronously: Place a call returns immediately with a
callIdand apendingstatus. Poll Get a call for the final outcome. - The
activityIdfield is for advanced write‑back to an existing CRM activity (for example a Dynamics 365 Phone Call activity) and can be ignored for most flows.
Creating a connection
The connector supports the following authentication types:
| Default | Parameters for creating connection. | All regions | Not shareable |
Default
Applicable: All regions
Parameters for creating connection.
This is not shareable connection. If the power app is shared with another user, another user will be prompted to create new connection explicitly.
| Name | Type | Description | Required |
|---|---|---|---|
| API Key | securestring | The API Key for this api | True |
Actions
| Create a call reason |
Create a call reason. |
| Get a call |
Get a call. |
| Get a call reason |
Get a call reason. |
| List call reasons |
Returns the configured call reasons (automations) for the organization. |
| List calls |
Lists recent calls, newest first. Use 'since' to poll for updates. |
| Place a call |
Places an AI voice call now to a contact for the given reason. Pass the Dataverse contactid as contact.externalId so the result is written back as a new Phone Call activity on that Contact's timeline. To COMPLETE an existing Phone Call activity instead (campaign-distribution mode), pass its activityId. Use content.* to drive the call script inline (Campaign-driven), overriding the reason's stored content. |
| Test connection |
Verifies the API key and returns the organization it maps to. |
| Update a call reason |
Update a call reason. |
Create a call reason
Create a call reason.
Parameters
| Name | Key | Required | Type | Description |
|---|---|---|---|---|
|
name
|
name | True | string | |
|
description
|
description | string | ||
|
dayOfWeek
|
dayOfWeek | integer | ||
|
questions
|
questions | True | array of string | |
|
smsOnNoAnswer
|
smsOnNoAnswer | boolean | ||
|
smsMessage
|
smsMessage | string | ||
|
status
|
status | string |
active | paused |
Returns
| Name | Path | Type | Description |
|---|---|---|---|
|
id
|
id | string |
Get a call
Get a call.
Parameters
| Name | Key | Required | Type | Description |
|---|---|---|---|---|
|
Id
|
id | True | string |
Id |
Returns
| Name | Path | Type | Description |
|---|---|---|---|
|
call
|
call | Call |
Get a call reason
Get a call reason.
Parameters
| Name | Key | Required | Type | Description |
|---|---|---|---|---|
|
Id
|
id | True | string |
Id |
Returns
| Name | Path | Type | Description |
|---|---|---|---|
|
reason
|
reason | Reason |
List call reasons
Returns the configured call reasons (automations) for the organization.
Returns
| Name | Path | Type | Description |
|---|---|---|---|
|
reasons
|
reasons | array of Reason |
List calls
Lists recent calls, newest first. Use 'since' to poll for updates.
Parameters
| Name | Key | Required | Type | Description |
|---|---|---|---|---|
|
Since
|
since | string |
ISO-8601 timestamp; only calls created at/after this. |
|
|
Status
|
status | string |
Filter by status (pending, in_progress, completed, failed, declined). |
|
|
ReasonId
|
reasonId | string |
ReasonId |
|
|
Limit
|
limit | integer |
Limit |
Returns
| Name | Path | Type | Description |
|---|---|---|---|
|
calls
|
calls | array of Call |
Place a call
Places an AI voice call now to a contact for the given reason. Pass the Dataverse contactid as contact.externalId so the result is written back as a new Phone Call activity on that Contact's timeline. To COMPLETE an existing Phone Call activity instead (campaign-distribution mode), pass its activityId. Use content.* to drive the call script inline (Campaign-driven), overriding the reason's stored content.
Parameters
| Name | Key | Required | Type | Description |
|---|---|---|---|---|
|
reasonId
|
reasonId | True | string | |
|
name
|
name | string | ||
|
phone
|
phone | True | string |
E.164 phone number. |
|
email
|
string | |||
|
externalId
|
externalId | string |
Dataverse contactid GUID — bound as the new Phone Call activity's Regarding (create path). |
|
|
activityId
|
activityId | string |
Existing Dataverse phonecall (activityid) GUID to COMPLETE with the outcome. Omit to create a new Phone Call activity. |
|
|
purpose
|
purpose | string | ||
|
greeting
|
greeting | string | ||
|
goodbye
|
goodbye | string | ||
|
questions
|
questions | array of string |
Returns
- Body
- PlaceCallResponse
Test connection
Update a call reason
Update a call reason.
Parameters
| Name | Key | Required | Type | Description |
|---|---|---|---|---|
|
Id
|
id | True | string |
Id |
|
name
|
name | True | string | |
|
description
|
description | string | ||
|
dayOfWeek
|
dayOfWeek | integer | ||
|
questions
|
questions | True | array of string | |
|
smsOnNoAnswer
|
smsOnNoAnswer | boolean | ||
|
smsMessage
|
smsMessage | string | ||
|
status
|
status | string |
active | paused |
Definitions
Ping
| Name | Path | Type | Description |
|---|---|---|---|
|
ok
|
ok | boolean | |
|
orgId
|
orgId | string | |
|
org
|
org | string |
Reason
| Name | Path | Type | Description |
|---|---|---|---|
|
id
|
id | string | |
|
name
|
name | string | |
|
description
|
description | string |
Plain-language purpose the AI relays to the contact. |
|
status
|
status | string |
active | paused |
|
dayOfWeek
|
dayOfWeek | integer |
Weekly schedule day (1=Mon … 5=Fri). |
|
questions
|
questions | array of string | |
|
smsOnNoAnswer
|
smsOnNoAnswer | boolean | |
|
smsMessage
|
smsMessage | string | |
|
contactCount
|
contactCount | integer |
PlaceCallResponse
| Name | Path | Type | Description |
|---|---|---|---|
|
callId
|
callId | string | |
|
status
|
status | string |
Call
| Name | Path | Type | Description |
|---|---|---|---|
|
callId
|
callId | string | |
|
reasonId
|
reasonId | string | |
|
status
|
status | string |
pending | contacting | in_progress | completed | failed | declined |
|
outcome
|
outcome | string |
completed | no_answer | declined | in_progress |
|
name
|
contact.name | string | |
|
phone
|
contact.phone | string | |
|
externalId
|
contact.externalId | string | |
|
summary
|
summary | string | |
|
issueRaised
|
issueRaised | boolean | |
|
notes
|
notes | string | |
|
durationSec
|
durationSec | integer | |
|
completedAt
|
completedAt | string | |
|
createdAt
|
createdAt | string |