AgentStack
SKILL verified MIT Self-run

Orchardcore Omnichannel

skill-crestapps-crestapps-agentskills-orchardcore-omnichannel · by CrestApps

Skill for configuring Omnichannel communication in Orchard Core using CrestApps modules. Covers subject flows, subject actions, campaigns as grouping/reporting records, activity batches, dispositions, multi-channel messaging (SMS, email, phone, chat), AI-powered automation, Azure Event Grid webhooks, and Twilio integration. Use this skill when requests mention Orchard Core Omnichannel, Subject Fl…

No reviews yet
0 installs
11 views
0.0% view→install

Install

$ agentstack add skill-crestapps-crestapps-agentskills-orchardcore-omnichannel

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Orchardcore Omnichannel? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Orchard Core Omnichannel - Prompt Templates

Configure Omnichannel

You are an Orchard Core expert. Generate code, configuration, and recipes for adding omnichannel communication capabilities to an Orchard Core application using CrestApps modules.

Guidelines

  • The CrestApps Omnichannel module (CrestApps.OrchardCore.Omnichannel) provides a unified multi-channel communication layer supporting SMS, email, phone, and chat channels.
  • The Managements feature (CrestApps.OrchardCore.Omnichannel.Managements) adds an admin UI for contacts, activities, activity batches, campaigns, subject flows, dispositions, and channel endpoints under the Interaction Center menu.
  • The SMS feature (CrestApps.OrchardCore.Omnichannel.Sms) enables AI-powered SMS automation. It integrates with the AI Chat module to run AI-driven conversations over SMS using Twilio webhooks.
  • The Event Grid feature (CrestApps.OrchardCore.Omnichannel.EventGrid) receives inbound messages from Azure Event Grid via a webhook endpoint, validated with a SAS key or AAD bearer token.
  • The Azure Communication Services feature (CrestApps.OrchardCore.Omnichannel.AzureCommunicationServices) provides integration points for Azure Communication Services.
  • Omnichannel domain data (messages, activities, batches, AI chat sessions) is stored in a dedicated Omnichannel YesSql collection.
  • Communication preferences (DoNotCall, DoNotSms, DoNotEmail, DoNotChat) are tracked per contact with UTC timestamps.
  • The SMS module validates inbound Twilio requests using HMAC-SHA1 signature verification against the Twilio AuthToken.
  • A background task runs every 5 minutes to process automated activities that are scheduled and ready for dispatch.
  • Always secure API keys, SAS keys, and Twilio credentials using user secrets or environment variables; never hardcode them.
  • Install CrestApps packages in the web/startup project.

Available Omnichannel Features

| Feature | Feature ID | Description | |---------|-----------|-------------| | Omnichannel | CrestApps.OrchardCore.Omnichannel | Base omnichannel layer with message indexing and contact communication preferences | | Azure Communication Services | CrestApps.OrchardCore.Omnichannel.AzureCommunicationServices | Azure Communication Services integration for multi-channel messaging | | Azure Event Grid | CrestApps.OrchardCore.Omnichannel.EventGrid | Webhook endpoint for receiving inbound messages from Azure Event Grid | | Omnichannel Management | CrestApps.OrchardCore.Omnichannel.Managements | Admin UI for contacts, activities, activity batches, campaigns, subject flows, dispositions, and channel endpoints | | SMS Automation | CrestApps.OrchardCore.Omnichannel.Sms | AI-powered SMS channel automation via Twilio with AI chat session integration |

NuGet Packages

| Package | Description | |---------|-------------| | CrestApps.OrchardCore.Omnichannel | Base omnichannel module | | CrestApps.OrchardCore.Omnichannel.EventGrid | Azure Event Grid webhook handler | | CrestApps.OrchardCore.Omnichannel.Managements | Contact and activity management UI | | CrestApps.OrchardCore.Omnichannel.Sms | SMS automation with Twilio and AI |

Supported Channels

The omnichannel system supports the following communication channels:

  • SMS - Text messaging via Twilio or Azure Communication Services
  • Email - Email communication with contact email tracking
  • Phone - Voice call tracking with do-not-call preferences
  • Chat - Chat messaging with do-not-chat preferences

Content Types and Parts

| Content Type / Part | Stereotype | Description | |---------------------|-----------|-------------| | OmnichannelContactPart | — | Attachable part that marks a content item as an omnichannel contact | | PhoneNumber | ContactMethod | Contact method with Number, Extension, and Type fields | | EmailAddress | ContactMethod | Contact method with an Email field | | PhoneNumberInfoPart | — | Reusable part with phone number, extension, and type fields | | EmailInfoPart | — | Reusable part with an email field | | OmnichannelContactInfoPart | — | Contact information part |

Enabling Omnichannel Features via Recipe

Enable the base omnichannel and management features:

{
  "steps": [
    {
      "name": "Feature",
      "enable": [
        "CrestApps.OrchardCore.Omnichannel",
        "CrestApps.OrchardCore.Omnichannel.Managements"
      ],
      "disable": []
    }
  ]
}

Enabling SMS Automation via Recipe

Enable SMS automation with AI chat integration. This requires the AI and AI Chat features to be enabled alongside the SMS feature:

{
  "steps": [
    {
      "name": "Feature",
      "enable": [
        "CrestApps.OrchardCore.AI",
        "CrestApps.OrchardCore.AI.Chat",
        "CrestApps.OrchardCore.Omnichannel",
        "CrestApps.OrchardCore.Omnichannel.Managements",
        "CrestApps.OrchardCore.Omnichannel.Sms"
      ],
      "disable": []
    }
  ]
}

Enabling Azure Event Grid via Recipe

Enable the Event Grid webhook endpoint for receiving inbound messages from Azure:

{
  "steps": [
    {
      "name": "Feature",
      "enable": [
        "CrestApps.OrchardCore.Omnichannel",
        "CrestApps.OrchardCore.Omnichannel.EventGrid"
      ],
      "disable": []
    }
  ]
}

Azure Event Grid Configuration

Configure Event Grid webhook authentication in your shell configuration (appsettings.json):

{
  "CrestApps": {
    "Omnichannel": {
      "EventGrid": {
        "EventGridSasKey": "",
        "AADIssuer": "",
        "AADAudience": "",
        "AADMetadataAddress": ""
      }
    }
  }
}

The webhook endpoint is available at POST Omnichannel/webhook/AzureEventGrid. It validates requests using either a SAS key (aeg-sas-key header) or an AAD bearer token.

Webhook Endpoints

| Method | Route | Module | Authentication | |--------|-------|--------|---------------| | POST | Omnichannel/webhook/AzureEventGrid | Event Grid | SAS key or AAD bearer token | | POST | Omnichannel/webhook/Twilio | SMS | Twilio HMAC-SHA1 signature | | POST | Omnichannel/webhook/TwilioEventGrid | SMS | Twilio HMAC-SHA1 signature |

All webhook endpoints are anonymous and do not require antiforgery tokens. They validate authenticity using their respective authentication mechanisms.

AI-Powered SMS Automation

The SMS module integrates with the CrestApps AI Chat module to enable automated SMS conversations:

  1. Outbound - The SmsOmnichannelProcessor creates AI chat sessions, renders initial messages using the configured subject flow and AI profile, and sends them via ISmsService.
  2. Inbound - The SmsOmnichannelEventHandler receives customer SMS replies, feeds them into the AI chat session as user prompts, runs AI completion, and sends the AI response back as SMS.
  3. Conclusion Analysis - A deferred task uses AI with the sms-conclusion-analysis prompt template to determine if the conversation has concluded. When concluded, it auto-sets the disposition and triggers the CompletedActivityEvent workflow event.

Admin UI - Interaction Center

The Managements feature adds an Interaction Center menu in the admin dashboard with the following sections:

  1. Activities - View and manage omnichannel activities (calls, SMS, emails). Filter by status, channel, campaign, and assignee.
  2. Activity Batches - Group and manage activities in batches for bulk operations. Batches choose a subject and contacts, then resolve campaign, interaction type, channel, and endpoint from the subject flow when activities are loaded.
  3. Campaigns - Define campaign names and descriptions used for grouping and reporting.
  4. Subject Flows - Configure campaign association, interaction type, channel, channel endpoint, and AI settings per OmnichannelSubject content type.
  5. Dispositions - Configure unique activity outcome categories (e.g., completed, no answer, callback requested) used by subject actions.
  6. Channel Endpoints - Manage communication channel endpoints (phone numbers, SMS numbers, email addresses).

Subject Flows and Manage Flow

  • A subject is any content type with the OmnichannelSubject stereotype.
  • Subject flow settings live at the subject-content-type level, not the campaign level.
  • Campaigns are used for grouping and reporting only; they no longer define channel, interaction type, endpoint, or action logic.
  • The Configure screen stores the campaign, interaction type, channel, endpoint, and AI-related settings for the subject.
  • The Manage Flow screen stores disposition-driven Subject Actions for that subject.
  • Subjects with no actions show a Missing flow badge in the Subject Flows list.
  • When the AI feature is enabled, automated subject flows expose a chat AI profile selector plus subject goal and initial outbound prompt pattern fields.

Workflow Integration

The Managements feature provides workflow tasks and events for automation:

Workflow Events:

  • CompletedActivityEvent - Fires when an activity is completed, providing Activity, Contact, Subject, and Disposition data.

Workflow Tasks:

  • TryAgainActivityTask - Creates a retry activity with configurable max attempts, urgency level, and schedule delay.
  • NewActivityTask - Creates a new activity for a different subject; the new activity resolves campaign and channel behavior from the target subject flow.
  • SetContactCommunicationPreferenceActivityTask - Updates a contact's DoNotCall, DoNotSms, DoNotEmail, or DoNotChat preferences.

Permissions

| Permission | Description | |-----------|-------------| | ListActivities | List all omnichannel activities | | ListContactActivities | List activities for a specific contact | | CompleteActivity | Complete any activity | | CompleteOwnActivity | Complete only own assigned activities | | EditActivity | Edit activity details | | ManageDispositions | Manage disposition categories | | ManageCampaigns | Manage campaigns | | ManageActivityBatches | Manage activity batches | | ManageChannelEndpoints | Manage channel endpoints |

By default, the Administrator role has all permissions. The Agent role has ListActivities and ListContactActivities.

Background Processing

The AutomatedActivitiesProcessorBackgroundTask runs on a cron schedule (*/5 * * * *, every 5 minutes). It queries activities with Status = NotStarted and InteractionType = Automated that are scheduled for dispatch (ScheduledUtc <= now), then routes them to the appropriate IOmnichannelProcessor implementation (e.g., SmsOmnichannelProcessor) in batches of 100.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.