Message UI and Experiences

This guide is for partners building end-user experiences: what users see in the MorisBox app, and which APIs and payloads to use for rich messages, menus, and multi-step flows.

It is not a design system for the documentation site.


What users see

In the mobile partner space / Client Application:

AreaPurpose
MessagesYour hub list - notifications, media, newsletters, and flow cards, newest first
FormsAvailable interactive flows
ConversationsSupport threads opened by the user
BotsYour bots available in-app

Automated partner sends go to Messages. Do not place campaign content in support conversations.


Building blocks (content types)

Use POST /api/v1/messages with content_type and the media, link, or HTML fields. Complete reference: Media and Content Types, Messages.

Text

A simple notification or caption.

{
  "phone": "+228XXXXXXXX",
  "content_type": "text",
  "body": "Votre dossier a été mis à jour.",
  "priority": "notification"
}

User UI: simple list row / bubble.


Image

{
  "phone": "+228XXXXXXXX",
  "content_type": "image",
  "body": "Photo de l’agence",
  "media_url": "https://cdn.example.com/agence.jpg",
  "media_filename": "agence.jpg"
}

User UI: image preview; tap to open full size.


Document / audio / video

{
  "content_type": "document",
  "body": "Guide d’affiliation",
  "media_url": "https://cdn.example.com/guide.pdf",
  "media_filename": "guide.pdf"
}
TypeUser UI
documentFile row (name, type, and open action)
audioAudio row; open / play
videoVideo card; open

CTA link

A rich card with a title, description, button, and optional image.

{
  "content_type": "link",
  "body": "Consultez votre espace assuré.",
  "link_url": "https://morisbox.com",
  "link_title": "Espace assuré SEED",
  "link_description": "Cotisations, demandes et documents.",
  "link_label": "Ouvrir le portail",
  "link_image_url": "https://cdn.example.com/cover.jpg"
}

User UI: card and primary button; opens the URL.


HTML newsletter

A rich image, video, and HTML layout. It opens full-screen when the user taps the hub row, without showing a miniature preview first.

{
  "content_type": "html",
  "subject": "SEED Actu · Juillet",
  "html": "<div><h1>Bonjour</h1><img src=\"https://…/photo.jpg\" style=\"max-width:100%\"/><p>…</p></div>"
}

User UI: list title = subject; tap → complete HTML reader.
Details: HTML Newsletters.


Flow invitation

An interactive multi-screen form for registration, waiting lists, and more.

POST /api/v1/bots/{bot_code}/flows/{flow_code}/invite
{ "phone": "+228XXXXXXXX" }

User UI: flow card; opens the form runner; after completion, the same card becomes a read-only summary.
Details: Interactive Flows.


Bot conversation UI (menus and steps)

When a user runs a bot session, the runtime can present:

Event / step typeUser experience
message / flow_messageText in the flow / bot UI
menu (button)Vertical choice list
menu (list)Sectioned list (WhatsApp-list style)
flow_screen + formMulti-field form (inputs, select, phone, email, and more)
flow_screen + input / selectSingle field or options
paymentPayment confirmation (stub / future)
flow_completedCompletion and optional summary

Form field types (flow screens)

Define these in a form step's fields_json:

typeControl
textText input
phonePhone number (E.164 validation)
emailEmail address (validated)
numberNumeric input
dateYYYY-MM-DD date
booleanYes / No
selectOption list (options: [{id, label}])

Server-side validation: Field Validation.

Form-step definition example

[
  {
    "key": "full_name",
    "type": "text",
    "label": "Nom complet",
    "required": true,
    "placeholder": "Ex. Ama Koffi"
  },
  {
    "key": "email",
    "type": "email",
    "label": "E-mail",
    "required": false
  },
  {
    "key": "service",
    "type": "select",
    "label": "Service",
    "required": true,
    "options": [
      { "id": "affiliation", "label": "Affiliation" },
      { "id": "pension", "label": "Pension" }
    ]
  }
]

Choose the right building block

GoalUse
One-time alerttext or a template
Display a photo / PDFimage / document
Direct users to your portalCTA link
Rich monthly email-style contenthtml newsletter
Multi-step registration / waiting listFlow invitation and form steps
Guided service menuBot menus (local or service)
Ongoing support chatConversation started by the user (agent replies)

Separators and rich-content structure

In HTML newsletters, structure content with:

  • Headings (h1h3) for sections
  • Horizontal rules (<hr>) or spaced blocks for visual separation
  • Bordered div cards for CTAs
  • Lists (ul / ol) for scannable points

In flows, prefer separate steps (screens) over one long form when possible for a better mobile experience.


End-to-end patterns

1. Campaign: image and link

  1. Send an image with a caption
  2. Send a CTA link to “Complete my request”

2. Onboarding waiting list

  1. POST …/flows/waitlist/invite
  2. User completes identity and preference forms
  3. Card changes to completed with a summary

3. Newsletter with media

  1. Build HTML with <img> and <video>
  2. Set content_type=html and subject
  3. User opens the complete reader from the hub

Related API documentation

TopicPage
Send messagesMessages
Media typesMedia and Content Types
NewslettersHTML Newsletters
FlowsInteractive Flows
Bots360Bots
Bot authenticationBot Credentials and Webhooks
ValidationField Validation