Direct+ Deployment Assets
This directory contains ready-to-use templates, scripts, and configuration files for deploying the Direct+ workflow (callback-and-voicemail-with-email) to new Connie accounts.
Files Overview
Configuration Templates
environment-variables-template.env
- Template for Twilio Functions environment variablesterraform-template.tf
- Infrastructure as Code template for Terraform deploymentstudio-flow-template.json
- Studio Flow JSON template for Direct+ workflow
Testing Scripts
mailgun-test-script.sh
- Pre-deployment Mailgun API validation scriptdeployment-validation-script.sh
- Comprehensive post-deployment validation
Usage Instructions
1. Pre-Deployment Setup
Mailgun Testing:
# Set configuration variables
export MAILGUN_API_KEY='your-domain-specific-api-key'
export MAILGUN_DOMAIN='voicemail.clientdomain.com'
export ADMIN_EMAIL='admin@clientdomain.com'
# Run Mailgun validation
chmod +x mailgun-test-script.sh
./mailgun-test-script.sh
Environment Variables:
# Copy template and customize
cp environment-variables-template.env client-config.env
# Edit client-config.env with actual values
# Add variables to Twilio Functions Console
2. Infrastructure Deployment
Terraform Deployment:
# Copy and customize terraform template
cp terraform-template.tf main.tf
# Create terraform.tfvars with client configuration
cat << EOF > terraform.tfvars
callback_and_voicemail_with_email_enabled = true
twilio_account_sid = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
twilio_auth_token = "your-auth-token"
workspace_sid = "WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
workflow_sid = "WWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
phone_number = "+18005551234"
admin_email = "admin@clientdomain.com"
mailgun_domain = "voicemail.clientdomain.com"
mailgun_api_key = "your-mailgun-api-key"
organization_name = "Client Name"
EOF
# Deploy infrastructure
terraform init
terraform plan -var-file="terraform.tfvars"
terraform apply -var-file="terraform.tfvars"
Studio Flow Creation:
# If Terraform doesn't create Studio Flow automatically
cp studio-flow-template.json direct-plus-flow.json
# Update placeholders in the JSON file:
# - YOUR-DEPLOYMENT-DOMAIN
# - YOUR-WORKFLOW-SID
# Create flow via CLI
twilio api:studio:v2:flows:create \
--friendly-name "Direct+ Callback and Voicemail Flow" \
--status published \
--definition "$(cat direct-plus-flow.json)"
3. Post-Deployment Validation
Comprehensive Testing:
# Set all configuration variables
export ACCOUNT_SID="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export PHONE_NUMBER="+18005551234"
export ADMIN_EMAIL="admin@clientdomain.com"
export MAILGUN_DOMAIN="voicemail.clientdomain.com"
export MAILGUN_API_KEY="your-api-key"
export DEPLOYMENT_DOMAIN="custom-flex-extensions-serverless-XXXX-dev.twil.io"
export WORKSPACE_SID="WSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export WORKFLOW_SID="WWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Run validation script
chmod +x deployment-validation-script.sh
./deployment-validation-script.sh
Template Customization
Environment Variables Template
The environment-variables-template.env
file includes:
- Required variables for Direct+ functionality
- Optional variables for advanced customization
- Security notes and best practices
- Testing commands for validation
Terraform Template
The terraform-template.tf
provides:
- Complete infrastructure definition
- Configurable variables for client customization
- Resource dependencies properly defined
- Output values for testing and monitoring
Studio Flow Template
The studio-flow-template.json
contains:
- Minimal viable Studio Flow for Direct+ workflow
- Placeholder values for easy customization
- Correct widget configuration for callback and voicemail
Script Features
Mailgun Test Script
- ✅ API Authentication validation
- ✅ Domain verification status check
- ✅ Test email delivery with basic message
- ✅ Attachment capability testing with audio file
- ✅ Comprehensive error reporting with solutions
Deployment Validation Script
- ✅ Configuration validation of all required variables
- ✅ Twilio CLI access and authentication testing
- ✅ Resource verification (workspace, workflow, phone number)
- ✅ Serverless functions accessibility testing
- ✅ Mailgun integration validation
- ✅ Email delivery end-to-end testing
- ✅ Studio Flow configuration verification
- ✅ Network connectivity testing
- ✅ Deployment readiness report generation
Common Usage Patterns
Quick Setup Workflow
# 1. Test Mailgun first
export MAILGUN_API_KEY='...' MAILGUN_DOMAIN='...' ADMIN_EMAIL='...'
./mailgun-test-script.sh
# 2. Deploy with Terraform
cp terraform-template.tf main.tf
# Edit terraform.tfvars
terraform apply -var-file="terraform.tfvars"
# 3. Validate deployment
export ACCOUNT_SID='...' PHONE_NUMBER='...' # ... other vars
./deployment-validation-script.sh
Manual Configuration Workflow
# 1. Setup environment variables
cp environment-variables-template.env client.env
# Edit client.env and add to Twilio Functions Console
# 2. Create Studio Flow
cp studio-flow-template.json flow.json
# Edit placeholders
twilio api:studio:v2:flows:create --definition "$(cat flow.json)"
# 3. Configure phone number
twilio api:core:incoming-phone-numbers:update \
--sid PNxxxxxxx --voice-application-sid FWxxxxxxx
# 4. Test deployment
./deployment-validation-script.sh
Error Handling
Common Issues and Solutions
Mailgun API Errors:
- 401 Unauthorized → Check API key type (use domain sending key)
- 404 Domain not found → Verify domain configuration
- DNS issues → Wait 24 hours for propagation
Terraform Errors:
- Resource conflicts → Check existing resources
- Permission errors → Verify Twilio account permissions
- Variable validation → Check terraform.tfvars format
Studio Flow Issues:
- Invalid JSON → Validate JSON format
- Missing placeholders → Ensure all placeholders replaced
- Flow not appearing → Check Studio Flow creation status
Validation Script Failures:
- Missing variables → Set all required environment variables
- Network errors → Check connectivity to Twilio/Mailgun
- Resource not found → Verify SIDs and configurations
Security Notes
API Key Management
- Use domain-specific sending keys for Mailgun (not private keys)
- Store sensitive values in environment variables only
- Never commit real credentials to version control
- Rotate keys quarterly for security
Network Security
- All scripts use HTTPS only for API calls
- Connection timeouts prevent hanging connections
- Error messages don't expose sensitive information
Data Privacy
- Scripts don't log sensitive data
- Test emails contain only necessary information
- Validation results can be shared safely
Troubleshooting
Script Debugging
# Enable verbose output
set -x
./mailgun-test-script.sh
# Check specific components
curl -s --user "api:$MAILGUN_API_KEY" https://api.mailgun.net/v3/$MAILGUN_DOMAIN
twilio api:core:accounts:fetch
Resource Verification
# Verify Twilio resources
twilio api:taskrouter:v1:workspaces:list
twilio api:studio:v2:flows:list
twilio api:core:incoming-phone-numbers:list
# Check serverless deployment
twilio serverless:list
Email Testing
# Manual email test
curl -s --user "api:$MAILGUN_API_KEY" \
https://api.mailgun.net/v3/$MAILGUN_DOMAIN/messages \
-F from="Test <test@$MAILGUN_DOMAIN>" \
-F to="$ADMIN_EMAIL" \
-F subject="Manual Test" \
-F text="Testing email delivery"
Support
For issues with these deployment assets:
- Check error messages - scripts provide detailed error information
- Verify configuration - ensure all placeholders are replaced
- Test components individually - isolate issues to specific components
- Review logs - check Twilio Console and Mailgun dashboard logs
- Escalate if needed - provide complete error output and configuration details
These assets are designed to make Direct+ deployment reliable, repeatable, and thoroughly tested.