Appearance
Create an Amazon Bedrock agent with a prompt. Since the text prompt is central to getting great results out of the AI, it is highly recommended that you also read the Prompting Best Practices guide.
Properties
amazon_bedrock
objectRequired
An object that accepts the following properties.
amazon_bedrock.global_data
object
A powerful and flexible environmental variable which can accept arbitrary data that is set initially in the SWML script or from the SWML set_global_data action. This data can be referenced globally. All contained information can be accessed and expanded within the prompt - for example, by using a template string.
amazon_bedrock.params
object
A JSON object containing parameters as key-value pairs.
amazon_bedrock.post_prompt
object
The final set of instructions and configuration settings to send to the agent. Accepts either a text string or a pom object array for structured prompts, plus optional tuning parameters. See post_prompt details below.
amazon_bedrock.post_prompt_url
string
The URL to which to send status callbacks and reports. Authentication can also be set in the url in the format of username:password@url. See post_prompt_url callback below.
amazon_bedrock.prompt
objectRequired
Establishes the initial set of instructions and settings to configure the agent.
See prompt for additional details.
amazon_bedrock.SWAIG
object
An array of JSON objects to create user-defined functions/endpoints that can be executed during the dialogue.
See SWAIG for additional details.
post_prompt
The post_prompt object accepts either a plain text prompt or a structured POM prompt, plus optional tuning parameters.
Regular prompt
POM prompt
post_prompt.text
stringRequired
The main identity prompt for the AI. This prompt will be used to outline the agent’s personality, role, and other characteristics.
post_prompt.temperature
number
Controls the randomness of responses. Higher values (e.g., 0.8) make output more random and creative, while lower values (e.g., 0.2) make it more focused and deterministic. Range: 0.0 to 1.0.
post_prompt.top_p
number
Controls diversity via nucleus sampling. Only tokens with cumulative probability up to top_p are considered. Lower values make output more focused. Range: 0.0 to 1.0.
post_prompt.confidence
number
Minimum confidence threshold for AI responses. Responses below this threshold may be filtered or flagged. Range: 0.0 to 1.0.
post_prompt.presence_penalty
number
Penalizes tokens based on whether they appear in the text so far. Positive values encourage the model to talk about new topics.
post_prompt.frequency_penalty
number
Penalizes tokens based on their frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.
post_prompt_url callback
SignalWire will make a request to the post_prompt_url with the following parameters:
action
string
Action that prompted this request. The value will be “post_conversation”.
ai_end_date
integer
Timestamp indicating when the AI session ended.
ai_session_id
string
A unique identifier for the AI session.
ai_start_date
integer
Timestamp indicating when the AI session started.
app_name
string
Name of the application that originated the request.
call_answer_date
integer
Timestamp indicating when the call was answered.
call_end_date
integer
Timestamp indicating when the call ended.
call_id
string
ID of the call.
call_log
object
The complete log of the call, as a JSON object.
call_log.content
string
Content of the call log entry.
call_log.role
string
Role associated with the call log entry (e.g., “system”, “assistant”, “user”).
call_start_date
integer
Timestamp indicating when the call started.
caller_id_name
string
Name associated with the caller ID.
caller_id_num
string
Number associated with the caller ID.
content_disposition
string
Disposition of the content.
content_type
string
Type of content. The value will be text/swaig.
conversation_id
string
A unique identifier for the conversation thread, if configured via the AI parameters.
post_prompt_data
object
The answer from the AI agent to the post_prompt. The object contains the three following fields.
post_prompt_data.parsed
object
If a JSON object is detected within the answer, it is parsed and provided here.
post_prompt_data.raw
string
The raw data answer from the AI agent.
post_prompt_data.substituted
string
The answer from the AI agent, excluding any JSON.
project_id
string
ID of the Project.
space_id
string
ID of the Space.
SWMLVars
object
A collection of variables related to SWML.
swaig_log
object
A log related to SWAIG functions.
total_input_tokens
integer
Represents the total number of input tokens.
total_output_tokens
integer
Represents the total number of output tokens.
version
string
Version number.
Post prompt callback request example
Below is a json example of the callback request that is sent to the post_prompt_url:
{
"total_output_tokens": 119,
"caller_id_name": "[CALLER_NAME]",
"SWMLVars": {
"ai_result": "success",
"answer_result": "success"
},
"call_start_date": 1694541295773508,
"project_id": "[PROJECT_ID]",
"call_log": [\
{\
"content": "[AI INITIAL PROMPT/INSTRUCTIONS]",\
"role": "system"\
},\
{\
"content": "[AI RESPONSE]",\
"role": "assistant"\
},\
{\
"content": "[USER RESPONSE]",\
"role": "user"\
}\
],
"ai_start_date": 1694541297950440,
"call_answer_date": 1694541296799504,
"version": "2.0",
"content_disposition": "Conversation Log",
"conversation_id": "[CONVERSATION_ID]",
"space_id": "[SPACE_ID]",
"app_name": "swml app",
"swaig_log": [\
{\
"post_data": {\
"content_disposition": "SWAIG Function",\
"conversation_id": "[CONVERSATION_ID]",\
"space_id": "[SPACE_ID]",\
"meta_data_token": "[META_DATA_TOKEN]",\
"app_name": "swml app",\
"meta_data": {},\
"argument": {\
"raw": "{\n \"target\": \"[TRANSFER_TARGET]\"\n}",\
"substituted": "",\
"parsed": [\
{\
"target": "[TRANSFER_TARGET]"\
}\
]\
},\
"call_id": "[CALL_ID]",\
"content_type": "text/swaig",\
"ai_session_id": "[AI_SESSION_ID]",\
"caller_id_num": "[CALLER_NUMBER]",\
"caller_id_name": "[CALLER_NAME]",\
"project_id": "[PROJECT_ID]",\
"purpose": "Use to transfer to a target",\
"argument_desc": {\
"type": "object",\
"properties": {\
"target": {\
"description": "the target to transfer to",\
"type": "string"\
}\
}\
},\
"function": "transfer",\
"version": "2.0"\
},\
"command_name": "transfer",\
"epoch_time": 1694541334,\
"command_arg": "{\n \"target\": \"[TRANSFER_TARGET]\"\n}",\
"url": "https://example.com/here",\
"post_response": {\
"action": [\
{\
"say": "This is a say message!"\
},\
{\
"SWML": {\
"sections": {\
"main": [\
{\
"connect": {\
"to": "+1XXXXXXXXXX"\
}\
}\
]\
},\
"version": "1.0.0"\
}\
},\
{\
"stop": true\
}\
],\
"response": "transferred to [TRANSFER_TARGET], the call has ended"\
}\
}\
],
"total_input_tokens": 5627,
"caller_id_num": "[CALLER_NUMBER]",
"call_id": "[CALL_ID]",
"call_end_date": 1694541335435503,
"content_type": "text/swaig",
"action": "post_conversation",
"post_prompt_data": {
"substituted": "[SUMMARY_MESSAGE_PLACEHOLDER]",
"parsed": [],
"raw": "[SUMMARY_MESSAGE_PLACEHOLDER]"
},
"ai_end_date": 1694541335425164,
"ai_session_id": "[AI_SESSION_ID]"
}Responding to post prompt requests
The response to the callback request should be a JSON object with the following parameters:
{
"response": "ok"
}Amazon Bedrock example
The following example selects Bedrock’s Tiffany voice using the voice_id parameter in the prompt. It includes scaffolding for a post_prompt_url as well as several remote and inline functions using SWAIG.
YAMLJSON
---
version: 1.0.0
sections:
main:
- amazon_bedrock:
post_prompt_url: https://example.com/my-api
prompt:
voice_id: tiffany
text: |
You are a helpful assistant that can provide information to users about a destination.
At the start of the conversation, always ask the user for their name.
You can use the appropriate function to get the phone number, address,
or weather information.
post_prompt:
text: Summarize the conversation.
SWAIG:
includes:
- functions:
- get_phone_number
- get_address
url: https://example.com/functions
defaults:
web_hook_url: https://example.com/my-webhook
functions:
- function: get_weather
description: To determine what the current weather is in a provided location.
parameters:
properties:
location:
type: string
description: The name of the city to find the weather from.
type: object
- function: summarize_conversation
description: Summarize the conversation.
parameters:
type: object
properties:
name:
type: string
description: The name of the user.