لوحة تحكم · API · دردشة مباشرة
Upuah
لوحة واحدة. واجهتك البرمجيّة. محادثات مباشرة.
ضُمّ موظّفيك إلى مساحة العمل، وردّ على الزوّار من لوحة التحكم، وأتمِت الردود، وصمّم الأداة بهويّتك — والذكاء الاصطناعيّ قريبًا.
- 1 التركيب
- 2 المحادثة
- 3 لوحة التحكم
- 1ثبّت إضافة أوباه على ووردبريس
- 2فعّلها من صفحة «الإضافات»
- 3الصق مفتاح الواجهة البرمجيّة — وانتهى الأمر
الأداة نفسها، وصندوق الوارد نفسه.
محادثة واردة من واتساب محادثة واردة من دردشة الموقع
- أحمد وعندكم دعم على واتساب؟ 2د
- زائر #4812 كم يستغرق التركيب؟ 5د
- تذكرة #128 الفاتورة لم تصل 12د
باختصار
إحنا نبني لوحة التحكم. إنت تربط الـAPI وتشغّل الدردشة.
المنتج كله في جملة: Upuah تجهّز طبقة الإدارة — فريقك يربط المفاتيح، يرد مباشرة، ويأتمت الردود. والذكاء الاصطناعي قريبًا.
emb_8k2m…
متصل
كيف يعمل Upuah
من إعداد اللوحة لحد محادثة مباشرة.
اربط المفاتيح، صمّم الويدجت، حُط فريقك على صندوق الوارد، وأتمِت أول رد — كله من لوحة الإدارة.
اربط مساحة عملك
اعمل مفاتيح API من لوحة الإدارة واربط Upuah بواجهات منتجك.
- مفتاح عام + مفتاح سري
- نطاقات مسموح بيها ومقفولة
شغّل الدردشة المباشرة
يردّ فريقك من صندوق الوارد ويتحدّث الزوّار عبر الأداة التي تحمل هويّتك.
- صندوق وارد مشترك
- دردشة زوار لحظية
أتمِت وصمّم
اضبط الردود التلقائية والثيمات وقواعد زر الفتح — وردود الذكاء الاصطناعي قريبًا.
- قواعد الرد التلقائي
- ثيم الويدجت · ذكاء اصطناعي قريبًا
دردشة الفريق
المكان الذي يعمل فيه فريقك — مباشر، ومؤتمت، ومترابط.
شاشات توضيحيّة من جهة الموظّف في Upuah — كيف يرى فريقك المحادثات ويردّ عليها.
تحكّم في الهويّة
تصميم مركزي. تسليم متسق.
فرق التسويق والدعم بتشكّل تجربة الدردشة من لوحة التحكم. والفريق التقني بينشرها بالمفاتيح — من غير ما يعيد بناء الواجهة لكل موقع.
المعاينة التي يراها العميل
بيانات الدخول
مفاتيح API مبنية على فصل واضح للمخاطر.
أصدر المفاتيح من لوحة التحكم بالأدوار التي يتوقّعها فريق الأمن لديك — مفتاح عامّ للمتصفّح، ومفتاح سرّيّ للخادم.
مخصص للتشغيل من جهة المتصفح. مقيَّد بالنطاقات والقنوات المسموح بيها.
آمن لوضعه في صفحتك. كلّ ما يستطيعه هو فتح محادثة معك — ولا يقرأ شيئًا.
emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x
صلاحية كاملة للجلسات والرسائل والويب هوك. بيفضل على بنيتك التحتية وبس.
لا تضعه في صفحة أبدًا. فهو يقرأ ويكتب كلّ محادثة وتذكرة وإعداد في مساحة عملك.
upuah_••••••••••••••••c3e2
الموثوقية
بنية تحتية شكّلها عقد كامل من الترافيك الحي.
Upuah بتتشغّل كبنية إنتاج طويلة الأمد — مراقَبة، ومُصدَّرة بإصدارات، وموثَّقة لفرق ما تقدرش تشتغل بالتخمين.
- منذ 2014
- نقدّم تجارب دردشة بهويّة العميل على مواقع المستهلكين والشركات.
- 99.99%
- هدف تشغيل مع سجل حالة وتواصل واضح وقت الأعطال.
- توصيل عالمي
- استجابة سريعة للزوار ولمساحات عمل الموظفين في أي مكان.
- API مستقرة
- نقاط نهاية بإصدارات ومهل واضحة لإيقاف القديم، تناسب إدارة التغيير في الشركات.
المنصة
مبنية على طريقة شغل الفرق الحقيقية.
ليست قائمة ميزات مكدّسة — بل أربع ركائز للوحة تحكم Upuah، مصمَّمة لتعمل معًا.
لوحة تحكم الإدارة
اربط الـAPI، ضُم الموظفين، وأدِر كل مواقعك من مساحة عمل واحدة منضبطة.
ردود تلقائية
المسؤولون بيسجلوا رسائل الترحيب ورسائل خارج المواعيد ومحفّزات الكلمات — من غير أي نشر جديد.
صندوق وارد مباشر للفريق
يردّ الموظّفون لحظيًّا ويستخدم الزوّار الأداة التي تحمل هويّتك على موقعك.
ردود بالذكاء الاصطناعي قريبًا
ردود مقترحة ومؤتمتة في لوحة التحكم نفسها — خارطة طريق حقيقيّة، لا واجهة فارغة.
الربط
اربط بالتقنيات نفسها التي تعمل بها.
ركّبها من المتصفح، أو نادِ الـAPI من السيرفر، أو شغّلها في تطبيقات الموبايل، أو ثبّتها على ووردبريس وشوبيفاي — ويب، سيرفر، React Native، Flutter، Expo، Swift، Kotlin، Ionic، وغيرها.
<script src="https://cdn.upuah.com/widget.js" defer></script>
<script>
window.Upuah = window.Upuah || [];
Upuah.push(['init', {
key: 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x',
channel: 'support'
}]);
</script>
import { useEffect } from 'react';
export function UpuahChat() {
useEffect(() => {
const s = document.createElement('script');
s.src = 'https://cdn.upuah.com/widget.js';
s.async = true;
document.body.appendChild(s);
window.Upuah = window.Upuah || [];
Upuah.push(['init', {
key: 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x',
channel: 'support'
}]);
}, []);
return null;
}
<script setup>
import { onMounted } from 'vue'
onMounted(() => {
const s = document.createElement('script')
s.src = 'https://cdn.upuah.com/widget.js'
s.defer = true
document.body.appendChild(s)
window.Upuah = window.Upuah || []
Upuah.push(['init', {
key: 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x',
channel: 'support'
}])
})
</script>
// app/layout.tsx or _app.tsx
import Script from 'next/script';
export default function RootLayout({ children }) {
return (
<html>
<body>
{children}
<Script src="https://cdn.upuah.com/widget.js" strategy="afterInteractive" />
<Script id="Upuah-init">{`
window.Upuah = window.Upuah || [];
Upuah.push(['init', {
key: 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x',
channel: 'support'
}]);
`}</Script>
</body>
</html>
);
}
// plugins/upuah.client.ts
export default defineNuxtPlugin(() => {
const s = document.createElement('script')
s.src = 'https://cdn.upuah.com/widget.js'
s.defer = true
document.body.appendChild(s)
window.Upuah = window.Upuah || []
Upuah.push(['init', {
key: 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x',
channel: 'support'
}])
})
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-upuah',
template: ''
})
export class UpuahComponent implements OnInit {
ngOnInit() {
const s = document.createElement('script');
s.src = 'https://cdn.upuah.com/widget.js';
s.async = true;
document.body.appendChild(s);
(window as any).Upuah = window.Upuah || [];
Upuah.push(['init', {
key: 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x',
channel: 'support'
}]);
}
}
import fetch from 'node-fetch';
const res = await fetch('https://api.upuah.com/v1/messages', {
method: 'POST',
headers: {
'Authorization': 'Bearer upuah_••••••••c3e2',
'Content-Type': 'application/json'
},
body: JSON.stringify({
channel: 'support',
text: 'Thanks — an agent will reply shortly.'
})
});
const data = await res.json();
import express from 'express';
const app = express();
app.post('/webhook/upuah', express.json(), async (req, res) => {
const reply = await fetch('https://api.upuah.com/v1/messages', {
method: 'POST',
headers: {
'Authorization': 'Bearer upuah_••••••••c3e2',
'Content-Type': 'application/json'
},
body: JSON.stringify({
channel: 'support',
text: 'Thanks — an agent will reply shortly.'
})
});
res.json(await reply.json());
});
import requests
res = requests.post(
"https://api.upuah.com/v1/messages",
headers={
"Authorization": "Bearer upuah_••••••••c3e2",
"Content-Type": "application/json",
},
json={
"channel": "support",
"text": "Thanks — an agent will reply shortly.",
},
)
data = res.json()
import requests
from django.http import JsonResponse
from django.views.decorators.http import require_POST
@require_POST
def upuah_reply(request):
res = requests.post(
"https://api.upuah.com/v1/messages",
headers={
"Authorization": "Bearer upuah_••••••••c3e2",
"Content-Type": "application/json",
},
json={
"channel": "support",
"text": "Thanks — an agent will reply shortly.",
},
)
return JsonResponse(res.json())
from fastapi import FastAPI
import httpx
app = FastAPI()
@app.post("/upuah/reply")
async def upuah_reply():
async with httpx.AsyncClient() as client:
res = await client.post(
"https://api.upuah.com/v1/messages",
headers={
"Authorization": "Bearer upuah_••••••••c3e2",
},
json={
"channel": "support",
"text": "Thanks — an agent will reply shortly.",
},
)
return res.json()
<?php
$ch = curl_init('https://api.upuah.com/v1/messages');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer upuah_••••••••c3e2',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'channel' => 'support',
'text' => 'Thanks — an agent will reply shortly.',
]),
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
use Illuminate\Support\Facades\Http;
$response = Http::withToken('upuah_••••••••c3e2')
->post('https://api.upuah.com/v1/messages', [
'channel' => 'support',
'text' => 'Thanks — an agent will reply shortly.',
]);
$data = $response->json();
package main
import (
"bytes"
"net/http"
)
func main() {
body := []byte(`{"channel":"support","text":"Thanks — an agent will reply shortly."}`)
req, _ := http.NewRequest("POST", "https://api.upuah.com/v1/messages", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer upuah_••••••••c3e2")
req.Header.Set("Content-Type", "application/json")
http.DefaultClient.Do(req)
}
import { useEffect, useState } from 'react';
import { View, TextInput, Button, FlatList, Text } from 'react-native';
const UPUAH_KEY = 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x';
export default function UpuahChat() {
const [messages, setMessages] = useState([]);
const [text, setText] = useState('');
async function send() {
const res = await fetch('https://api.upuah.com/v1/messages', {
method: 'POST',
headers: {
'Authorization': `Bearer ${UPUAH_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ channel: 'support', text })
});
const data = await res.json();
setMessages((prev) => [...prev, data]);
setText('');
}
return (
<View>
<FlatList data={messages} renderItem={({ item }) => <Text>{item.text}</Text>} />
<TextInput value={text} onChangeText={setText} />
<Button title="Send" onPress={send} />
</View>
);
}
import 'package:http/http.dart' as http;
import 'dart:convert';
const upuahKey = 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x';
Future<Map<String, dynamic>> sendUpuahMessage(String text) async {
final res = await http.post(
Uri.parse('https://api.upuah.com/v1/messages'),
headers: {
'Authorization': 'Bearer $upuahKey',
'Content-Type': 'application/json',
},
body: jsonEncode({
'channel': 'support',
'text': text,
}),
);
return jsonDecode(res.body) as Map<String, dynamic>;
}
// Use inside a StatefulWidget TextField + ElevatedButton
// await sendUpuahMessage(controller.text);
import { useState } from 'react';
import { View, TextInput, Pressable, Text } from 'react-native';
const UPUAH_KEY = 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x';
export default function SupportScreen() {
const [text, setText] = useState('');
const [status, setStatus] = useState('');
async function sendMessage() {
const res = await fetch('https://api.upuah.com/v1/messages', {
method: 'POST',
headers: {
'Authorization': `Bearer ${UPUAH_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
channel: 'support',
text,
meta: { platform: 'expo' }
})
});
setStatus(res.ok ? 'Sent' : 'Failed');
setText('');
}
return (
<View style={{ padding: 16 }}>
<TextInput value={text} onChangeText={setText} placeholder="Message support" />
<Pressable onPress={sendMessage}>
<Text>Send via Upuah</Text>
</Pressable>
<Text>{status}</Text>
</View>
);
}
import Foundation
let upuahKey = "emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x"
func sendUpuahMessage(_ text: String) async throws -> [String: Any] {
var request = URLRequest(url: URL(string: "https://api.upuah.com/v1/messages")!)
request.httpMethod = "POST"
request.setValue("Bearer \(upuahKey)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try JSONSerialization.data(withJSONObject: [
"channel": "support",
"text": text,
"meta": ["platform": "ios"]
])
let (data, _) = try await URLSession.shared.data(for: request)
return try JSONSerialization.jsonObject(with: data) as? [String: Any] ?? [:]
}
// Task { try await sendUpuahMessage("Need help with my order") }
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody.Companion.toRequestBody
val upuahKey = "emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x"
val client = OkHttpClient()
fun sendUpuahMessage(text: String): String {
val json = """{"channel":"support","text":"$text","meta":{"platform":"android"}}"""
val body = json.toRequestBody("application/json".toMediaType())
val request = Request.Builder()
.url("https://api.upuah.com/v1/messages")
.addHeader("Authorization", "Bearer $upuahKey")
.post(body)
.build()
client.newCall(request).execute().use { response ->
return response.body?.string().orEmpty()
}
}
import { Component } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
@Component({
selector: 'app-upuah-chat',
template: `
<ion-input [(ngModel)]="text" placeholder="Message"></ion-input>
<ion-button (click)="send()">Send</ion-button>
`
})
export class UpuahChatComponent {
text = '';
private key = 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x';
constructor(private http: HttpClient) {}
send() {
const headers = new HttpHeaders({
'Authorization': `Bearer ${this.key}`,
'Content-Type': 'application/json'
});
this.http.post('https://api.upuah.com/v1/messages', {
channel: 'support',
text: this.text,
meta: { platform: 'ionic' }
}, { headers }).subscribe();
}
}
خطوات تركيب إضافة ووردبريس كاملة موجودة في التوثيق. نزّل ملفّ ZIP الخاصّ بإضافة Upuah من التوثيق، ثم ارفعها وفعّلها في ووردبريس (الإضافات ← أضف جديدًا ← رفع إضافة).
افتح التوثيق# 1. Download upuah.zip from Documentation
# 2. WP Admin → Plugins → Add New → Upload Plugin
# 3. Activate “Upuah Live Chat”
# 4. Settings → Upuah → paste your publishable key
define('UPUAH_PUB_KEY', 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x');
define('UPUAH_CHANNEL', 'support');
ضيف Upuah من المتجر الإلكتروني ← الثيمات ← تعديل الكود، أو ثبّت تطبيق Upuah على شوبيفاي أول ما ينزل. والصق مفتاحك العام في إعدادات الثيم.
افتح التوثيق{% comment %} layout/theme.liquid — before </body> {% endcomment %}
<script src="https://cdn.upuah.com/widget.js" defer></script>
<script>
window.Upuah = window.Upuah || [];
Upuah.push(['init', {
key: 'emb_8k2mq9xl4nr7vp0a91fj3wd6ts5ub7yc4ke2nh8x',
channel: 'support',
meta: {
shop: {{ shop.permanent_domain | json }},
customer: {{ customer.id | default: blank | json }}
}
}]);
</script>
الأسعار
باقات بسيطة لفرق كبرت على الويدجت العادي.
كل باقة فيها لوحة التحكم ومفاتيح الـAPI وصندوق شات العملاء والردود التلقائية. والذكاء الاصطناعي مكتوب جنبه «قريبًا» في كل الباقات.
Starter
EGP 100/mo
For early teams embedding chat on a single site.
- شهر — السعر الأساسي
- 12 شهرًا — خصم 5% (EGP 95/mo)
- 1 workspace · 2 agents
- Live inbox
- Automatic replies
- Publishable & secret keys
- Widget branding
- AI replies قريبًا
- WhatsApp channel · 1 number
Most chosen
Growth
EGP 149/mo
For product and support teams running multiple properties.
- شهر — السعر الأساسي
- 12 شهرًا — خصم 10% (EGP 134.1/mo)
- 24 شهرًا — خصم 20% (EGP 119.2/mo)
- 5 workspaces · 15 agents
- Live inbox + presence
- Unlimited auto-reply rules
- Webhooks & channels
- Priority email support
- AI replies قريبًا
- WhatsApp channel · 10 numbers
Enterprise
حسب الطلب
For organizations that need governance, scale, and dedicated support.
- 12 شهرًا — السعر الأساسي
- 24 شهرًا — السعر الأساسي
- Unlimited agents & sites
- SSO / security review
- Dedicated uptime objectives
- Custom limits & contracts
- Solution engineering
- AI roadmap alignment قريبًا
- WhatsApp channel · unlimited numbers
ابدأ