ابرووا
شروع رایگان
☰ فهرست مستندات · نمونه‌ها
به‌زودی. Abrova Chat به‌زودی فعال می‌شود. این صفحه توضیح می‌دهد چطور کار خواهد کرد؛ هنوز قابل استفاده نیست.
این صفحه هنوز ترجمه نشده — نسخه‌ی انگلیسی نمایش داده می‌شود. English

Use Case Examples

Real-world Abrova Chat integration patterns — customer support ticket chat, team collaboration project chat, education class group chat. Each shows room creation with push variables and deep links.

به‌روزرسانی: ۵ آبان ۱۴۰۵

Real-world integration patterns for common industries. Each example shows room creation with push notification variables and deep links.

Customer Support — Ticket Chat#

Agent-customer chat per ticket. Push notification shows agent name and ticket number.

AbrovaPush Template

  • Title: {{senderName}} — {{teamName}}
  • Body: Re: Ticket #{{ticketNumber}} — {{messagePreview}}

Flutter

dart
// Create support ticket chat room
final room = await client.findOrCreateRoom(
  externalId: 'ticket-${ticket.id}',
  type: RoomType.direct,
  name: 'Ticket #${ticket.number}',
  participants: [
    {'externalUserId': agent.id, 'displayName': agent.name, 'locale': 'en'},
    {'externalUserId': customer.id,  'displayName': customer.name,  'locale': customer.locale},
  ],
  metadata: {
    'pushVariables': {
      'teamName': team.name,
      'ticketNumber': ticket.number,
    },
    'pushData': {
      'deepLink': 'myapp://tickets/${ticket.id}',
      'ticketId': ticket.id,
    },
  },
);

Node.js

typescript
// Create support ticket chat room
const { room } = await abrovaChat.rooms.findOrCreate({
  externalId: `ticket-${ticket.id}`,
  type: 'direct',
  name: `Ticket #${ticket.number}`,
  participants: [
    { externalUserId: agent.id, displayName: agent.name, locale: 'en' },
    { externalUserId: customer.id,  displayName: customer.name,  locale: customer.locale },
  ],
  metadata: {
    pushVariables: { teamName: team.name, ticketNumber: ticket.number },
    pushData: { deepLink: `myapp://tickets/${ticket.id}`, ticketId: ticket.id },
  },
});

REST API

bash
# Create support ticket chat room
curl -X POST "https://chat.abrova.ir/api/v1/rooms/find-or-create" \
  -H "X-API-Key: ab_live_your_api_key" -H "X-Server-Secret: $ABROVA_SERVER_SECRET" -H "Content-Type: application/json" \
  -d '{
    "externalId": "ticket-456",
    "type": "direct",
    "name": "Ticket #456",
    "participants": [
      {"externalUserId": "agent-1", "displayName": "Support Team", "locale": "en"},
      {"externalUserId": "user-2",  "displayName": "Alice",       "locale": "hy"}
    ],
    "metadata": {
      "pushVariables": {"teamName": "Support Team", "ticketNumber": "456"},
      "pushData": {"deepLink": "myapp://tickets/456", "ticketId": "456"}
    }
  }'

Team Collaboration — Project Chat#

Team chat per project. Push shows project name and sender name.

AbrovaPush Template

  • Title: {{senderName}} — {{projectName}}
  • Body: New message in your project

Flutter

dart
final room = await client.findOrCreateRoom(
  externalId: 'project-${project.id}',
  type: RoomType.group,
  name: project.name,
  participants: [
    {'externalUserId': lead.id, 'displayName': lead.name, 'role': 'admin', 'locale': 'en'},
    {'externalUserId': member.id, 'displayName': member.name, 'locale': member.locale},
  ],
  metadata: {
    'pushVariables': {'projectName': project.name, 'teamName': team.name},
    'pushData': {'deepLink': 'myapp://projects/${project.id}'},
  },
);

Node.js

typescript
const { room } = await abrovaChat.rooms.findOrCreate({
  externalId: `project-${project.id}`,
  type: 'group',
  name: project.name,
  participants: [
    { externalUserId: lead.id, displayName: lead.name, role: 'admin', locale: 'en' },
    { externalUserId: member.id, displayName: member.name, locale: member.locale },
  ],
  metadata: {
    pushVariables: { projectName: project.name, teamName: team.name },
    pushData: { deepLink: `myapp://projects/${project.id}` },
  },
});

REST API

bash
curl -X POST "https://chat.abrova.ir/api/v1/rooms/find-or-create" \
  -H "X-API-Key: ab_live_your_api_key" -H "X-Server-Secret: $ABROVA_SERVER_SECRET" -H "Content-Type: application/json" \
  -d '{
    "externalId": "project-789",
    "type": "group",
    "name": "Website Redesign",
    "participants": [
      {"externalUserId": "lead-1", "displayName": "Alex", "role": "admin", "locale": "en"},
      {"externalUserId": "dev-2", "displayName": "Alice", "locale": "hy"}
    ],
    "metadata": {
      "pushVariables": {"projectName": "Website Redesign", "teamName": "Engineering"},
      "pushData": {"deepLink": "myapp://projects/789"}
    }
  }'

Education — Class Group Chat#

Group chat per class. Push shows class name.

Flutter

dart
final room = await client.findOrCreateRoom(
  externalId: 'class-${classId}',
  type: RoomType.group,
  name: 'Math 101 — Prof. Johnson',
  participants: [
    {'externalUserId': 'prof-1', 'displayName': 'Prof. Johnson', 'role': 'admin', 'locale': 'en'},
    {'externalUserId': 'student-1', 'displayName': 'Alice', 'locale': 'en'},
    {'externalUserId': 'student-2', 'displayName': 'Bob', 'locale': 'hy'},
  ],
  metadata: {
    'pushVariables': {'className': 'Math 101', 'semester': 'Spring 2026'},
    'pushData': {'deepLink': 'myapp://classes/${classId}'},
  },
);

// Pin an announcement — triggers message_pinned push
await client.pinMessage(announcementMsg.id);

// Share homework — triggers file_shared push
await client.sendMessage(
  room.id,
  content: 'Homework due Friday',
  type: MessageType.file,
  attachments: [homework],
);

Node.js

typescript
const { room } = await abrovaChat.rooms.findOrCreate({
  externalId: `class-${classId}`,
  type: 'group',
  name: 'Math 101 — Prof. Johnson',
  participants: [
    { externalUserId: 'prof-1', displayName: 'Prof. Johnson', role: 'admin', locale: 'en' },
    { externalUserId: 'student-1', displayName: 'Alice', locale: 'en' },
    { externalUserId: 'student-2', displayName: 'Bob', locale: 'hy' },
  ],
  metadata: {
    pushVariables: { className: 'Math 101', semester: 'Spring 2026' },
    pushData: { deepLink: `myapp://classes/${classId}` },
  },
});

// Pin an announcement — triggers message_pinned push
await abrovaChat.pins.pin(announcementMsg.id, 'prof-1');

// Share homework — triggers file_shared push
await abrovaChat.messages.send(room.id, {
  senderUserId: 'prof-1',
  content: 'Homework due Friday',
  type: 'file',
  attachments: [homework],
});

REST API

bash
# Create class group chat
curl -X POST "https://chat.abrova.ir/api/v1/rooms/find-or-create" \
  -H "X-API-Key: ab_live_your_api_key" -H "X-Server-Secret: $ABROVA_SERVER_SECRET" -H "Content-Type: application/json" \
  -d '{
    "externalId": "class-math101",
    "type": "group",
    "name": "Math 101 — Prof. Johnson",
    "participants": [
      {"externalUserId": "prof-1", "displayName": "Prof. Johnson", "role": "admin", "locale": "en"},
      {"externalUserId": "student-1", "displayName": "Alice", "locale": "en"},
      {"externalUserId": "student-2", "displayName": "Bob", "locale": "hy"}
    ],
    "metadata": {
      "pushVariables": {"className": "Math 101", "semester": "Spring 2026"},
      "pushData": {"deepLink": "myapp://classes/math101"}
    }
  }'
این صفحه مفید بود؟
گزارش مشکل