Call API Service Action
Last updated
Last updated
This operation can be used to call any external HTTP or HTTPS Web API services using different methods. The full result or a single hierarchical value can be assigned to a variable to be later used in the conversation flow.
The action uses the following settings:
Setting | Description | |
Method | Choose the HTTP request method required to invoke the API Service | |
Service URL | The URL of the service to be invoked | |
Username | The username to be used to invoke the service, if required | |
Password | The password to be used to invoke the service, if required | |
Challenge Authentication Mode | If enabled, the service will called by using Username and Password as standard Network Credentials | |
Headers | Headers to be sent with the request. One header on each line in a name=value format | |
Execute Asynchronously | If enabled, will execute the API call asynchronously. The bot flow will not wait for the call completion to move forward. | |
Payload | The payload to be sent with the request. It can be anything acceptable by your target service. | |
UTF-8 Payload Format | Adds or removes UTF-8 charset request from content type header | |
Payload Mode | The type of payload that is going to be sent to the service. | |
Response Format | Choose if the service is replying with a JSON or XML or BINARY content | |
JSON Token Path | The full property path of the value to extract from the JSON response | |
XML XPath Query | The query to be applied to extract the required value from the XML response | |
Target Variable | The name of the variable that will hold the response received from the server or the value extracted by Token Path or XPath Query | |
Save Response Headers | If enabled, will store all of the request response headers in a variable |
Connect will invoke the URL using standard HTTP format: any service available online can be invoked and interacted using this action.
API actions, like all other actions, are executed during flow execution by default. A slow API call can slow down your bot response times and performance. If your API is just receiving data but you're not using the results on the flow please consider using asynchronous mode.
The JSON service reply format setting will also enable standard RAW replies: Connect will accept and store in the target variable whatever the server will reply. If you specify a JSON Token Path on a non-JSON result the action will raise an error.
The XML service reply format will automatically parse both standard XML replies and SOAP envelope replies. Typical WSDL based services are perfectly invokable using this action.
Use Payload Mode to set the type of payload you're sending to your service and to change how Xenioo will format the request.
Payload Mode | Result |
RAW | No formatting or additional headers are used by Connect. The request is sent as-is. |
JSON | Connect will automatically add a content-type:application/json header to the request |
FORM-ENCODED | Connect will automatically try to split the payload in one or more variable=value strings and send the data as application/x-www-form-urlencoded. |
By default, Connect will add a charset=utf-8 string to the content-type header. Some older web servers might not accept this additional information. If so, remove it by disabling the "UTF-8 Payload Format" flag.
If you specify both Username and Password but do not enable Challenge Authentication Mode, Xenioo will automatically transform both into a base64 string and call the service using an additional Authorization/Basic header like the one below:
Connect will never add any header or default call value to the request. Any header or value that is required by your call will need to be fully added so that you have total control over each and every aspect of your API integration.
Connect variables can hold without content loss only string based content. If you choose to access a service that replies in binary content (like a service that replies with a pdf file or an image) choose BINARY format as result. Connect will automatically create a file with the result contents inside your account storage and return the full filename url inside the target variable. If the binary service is correctly exposing a content-type for the reply, Connect will automatically append to the downloaded file the correct extension.
Response Headers
Response Headers can be saved by this action by activating the Save Response Headers flag. When the action is executed, every headers sent by the server inside the response will be added to a JSON object into a variable named last_api_response_headers.
A sample headers variable is available below:
Each field of the response headers can be accessed using Dynamic Parsing. For consistency among different systems and calls, all header key names are automatically translated to lowercase. Your dynamic parsing should take this into account when referring to specific fields.
By default, Connect enforces a 10 seconds timeout on every API call executed by your chatbot. If your remote service needs more time to execute its operations please contact team@xenioo.com to discuss your backend requirements.
When timeout is increased for an account an additional action message is counted for any API call taking more than 30 seconds to complete.
Call Completed. This action will trigger any child operation as soon as the service call is completed. The event will trigger whatever the call is successful or has failed.
This action produces the following variables:
Variable | Description |
last_api_message | The last HTTP message returned by the call. If successful, the variable will be set to 200 OK, otherwise it will contain the remote URL error message. |
last_api_response_headers | The response headers of the last call. |
Channel specific availability follows the table below:
Channel | Availability |
Fully Available. | |
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 to be used on a live chatbot.