Skip to content

Qualtrics Survey Bot #6

Qualtrics Survey Bot

Qualtrics Survey Bot #6

Workflow file for this run

name: Qualtrics Survey Bot
on:
schedule:
- cron: '0 17 * * 5' # Weekly on Friday 5 PM UTC
workflow_dispatch:
jobs:
run-qualtrics-bot:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
cache: 'pip'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then
pip install -r requirements.txt
else
echo "No requirements.txt found, installing basic dependencies"
pip install requests
fi
- name: Validate environment
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID }}
QUALTRICS_CLIENT_ID: ${{ secrets.QUALTRICS_CLIENT_ID }}
QUALTRICS_CLIENT_SECRET: ${{ secrets.QUALTRICS_CLIENT_SECRET }}
QUALTRICS_DATACENTER: ${{ secrets.QUALTRICS_DATACENTER }}
run: |
echo "Validating environment variables..."
if [ -z "$SLACK_BOT_TOKEN" ]; then
echo "SLACK_BOT_TOKEN secret is not configured"
echo "Please add SLACK_BOT_TOKEN to repository secrets"
exit 1
fi
if [ -z "$SLACK_CHANNEL_ID" ]; then
echo "SLACK_CHANNEL_ID secret is not configured"
echo "Please add SLACK_CHANNEL_ID to repository secrets"
exit 1
fi
if [ -z "$QUALTRICS_CLIENT_ID" ]; then
echo "QUALTRICS_CLIENT_ID secret is not configured"
echo "Please add QUALTRICS_CLIENT_ID to repository secrets"
exit 1
fi
if [ -z "$QUALTRICS_CLIENT_SECRET" ]; then
echo "QUALTRICS_CLIENT_SECRET secret is not configured"
echo "Please add QUALTRICS_CLIENT_SECRET to repository secrets"
exit 1
fi
if [ -z "$QUALTRICS_DATACENTER" ]; then
echo "QUALTRICS_DATACENTER secret is not configured"
echo "Please add QUALTRICS_DATACENTER to repository secrets"
exit 1
fi
echo "All environment variables are configured"
- name: Run Qualtrics Bot
id: bot-run
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID }}
QUALTRICS_CLIENT_ID: ${{ secrets.QUALTRICS_CLIENT_ID }}
QUALTRICS_CLIENT_SECRET: ${{ secrets.QUALTRICS_CLIENT_SECRET }}
QUALTRICS_DATACENTER: ${{ secrets.QUALTRICS_DATACENTER }}
run: |
echo "Starting Qualtrics Survey Bot..."
echo "Trigger: ${{ github.event_name }}"
echo "Run time: $(date)"
python qualtrics_bot.py
- name: Report success
if: success()
run: |
echo "Qualtrics bot completed successfully!"
echo "Survey data has been processed and sent to Slack"
echo "Completed at: $(date)"
- name: Report failure
if: failure()
run: |
echo "Qualtrics bot failed!"
echo "Check the logs above for error details"
echo "Common issues:"
echo " - Missing or invalid Slack tokens"
echo " - Missing or invalid Qualtrics OAuth credentials"
echo " - Invalid datacenter ID"
echo " - Network connectivity issues"
echo " - Qualtrics API rate limits"
echo " - OAuth scope issues (needs manage:surveys)"
- name: Upload logs (on failure)
if: failure()
uses: actions/upload-artifact@v4
with:
name: qualtrics-bot-failure-logs
path: |
*.log
/tmp/*.log
retention-days: 7