انتقل إلى المحتوى

واجهة برمجة تطبيقات المناطق الجغرافية (Geozones API)

getNearestZone

Anchor link to

تُستدعى داخليًا من SDK. تسترجع معلمات أقرب منطقة جغرافية والمسافة إليها. كما تسجل موقع الجهاز لإشعارات الدفع الجغرافية.

POST https://api.pushwoosh.com/json/1.3/getNearestZone

معلمات جسم الطلب

Anchor link to
المعلمةالنوع
مطلوبالوصف
applicationstringنعمرمز تطبيق Pushwoosh
hwidstringنعممعرف جهاز الهاردوير المستخدم في طلب /registerDevice.
latstringنعمخط عرض الجهاز.
lngstringنعمخط طول الجهاز.

مثال على الطلب

Anchor link to
{
"request": {
"application": "APPLICATION_CODE",
"hwid": "HWID",
"lat": 10.12345,
"lng": 28.12345
}
}

مثال PHP

Anchor link to
// انظر http://gomoob.github.io/php-pushwoosh/get-nearest-zone.html
use Gomoob\Pushwoosh\Model\Request\GetNearestZoneRequest;
// إنشاء نسخة الطلب
$request = GetNearestZoneRequest::create()
->setHwid('HWID')
->setLat(10.12345)
->setLng(28.12345);
// استدعاء خدمة الويب '/getNearestZone'
$response = $pushwoosh->getNearestZone($request);
if ($response->isOk()) {
print 'اسم المنطقة : ' . $response->getResponse()->getName();
print 'خط العرض : ' . $response->getResponse()->getLat();
print 'خط الطول : ' . $response->getResponse()->getLng();
print 'النطاق : ' . $response->getResponse()->getRange();
print 'المسافة : ' . $response->getResponse()->getDistance();
} else {
print 'عفوًا، فشلت العملية :-(';
print 'رمز الحالة : ' . $response->getStatusCode();
print 'رسالة الحالة : ' . $response->getStatusMessage();
}

addGeoZone

Anchor link to

تضيف منطقة جغرافية (Geozone) إلى تطبيق معين.

POST https://api.pushwoosh.com/json/1.3/addGeoZone

معلمات جسم الطلب

Anchor link to
المعلمة
النوع
مطلوبالوصف
authstringنعمرمز الوصول إلى API من لوحة تحكم Pushwoosh.
applicationstringنعمرمز تطبيق Pushwoosh
geozonesarrayنعممعلمات المنطقة الجغرافية كمصفوفة JSON.
geozones.namestringنعماسم المنطقة الجغرافية.
geozones.latstringمطلوب للدائرة.خط عرض المنطقة الجغرافية. يُحذف عند تعيين polygon — تستمد المنطقة الجغرافية المضلعة مركزها الخاص.
geozones.lngstringمطلوب للدائرة.خط طول المنطقة الجغرافية. يُحذف عند تعيين polygon — تستمد المنطقة الجغرافية المضلعة مركزها الخاص.
geozones.cooldownintegerنعمفترة الصمت بعد إرسال إشعار (بالثواني).
geozones.rangeintegerمطلوب للدائرة.نطاق المنطقة الجغرافية بالأمتار. الحد الأدنى 50. يُحذف عند تعيين polygon — تستمد المنطقة الجغرافية المضلعة نطاقها الخاص.
geozones.polygonobjectلايجعل المنطقة الجغرافية مضلعًا بدلاً من دائرة. لا يمكن دمجه مع lat/lng/range — سيتم رفض إرسال كليهما. انظر المناطق الجغرافية المضلعة.
geozones.contentstring or objectمطلوب إذا كان presetCode فارغًا.محتوى رسالة المنطقة الجغرافية.
geozones.presetCodestringمطلوب إذا كان content فارغًا.إعداد مسبق للدفع (Push preset) لاستخدامه بدلاً من content.
geozones.clusterstringلاحدد null لإلغاء ربط مجموعة (cluster) من المنطقة الجغرافية.
geozones.campaignstringلاحدد null لإلغاء ربط حملة (campaign) من المنطقة الجغرافية. إذا تم حذفه، ستبقى قيمة الحملة دون تغيير. ملاحظة: له أولوية أعلى من الحملة في الإعداد المسبق.
geozones.timetableobjectلايضبط فترات الجدول الزمني.

مثال على الطلب

Anchor link to
{
"request": {
"auth": "yxoPUlwqm............pIyEX4H", // رمز الوصول إلى API من لوحة تحكم Pushwoosh
"application": "XXXXX-XXXXX", // رمز تطبيق Pushwoosh
"geozones": [{
"name": "Statue of George", // مطلوب. اسم المنطقة الجغرافية.
"lat": "40.70087797", // مطلوب. خط عرض المنطقة الجغرافية.
"lng": "-73.931851387", // مطلوب. خط طول المنطقة الجغرافية.
"cooldown": 60, // بالثواني، مطلوب. فترة الصمت بعد إرسال إشعار
"range": 50, // بالأمتار، الحد الأدنى 50، مطلوب. نطاق المنطقة الجغرافية.
"content": "Lorem ipsum dolor sit amet,
consectetur adipiscing elit.", // أو كائن
"presetCode": "AAAAA-BBBBB", // اختياري. يمكن استخدام إعداد الدفع المسبق بدلاً من المحتوى
"cluster": "GEOZONE CLUSTER CODE", // اختياري. سيتم تطبيق فترة التهدئة للمجموعة
"campaign": "CAMPAIGN_CODE", // اختياري. حدد null لإلغاء ربط الحملة من المنطقة الجغرافية
"timetable": { // اختياري
"timezone": 1234, // بالثواني
"Mon": [ // الأيام المتاحة: Mon, Tue, Wed, Thu, Fri, Sat, Sun. إرسال الإشعارات
{
"start": "04:11",
"stop": "12:00"
}
],
"Sun": [
{ // فترة واحدة أو فترتان
"start": "01:11",
"stop": "17:00"
},
{
"start": "18:01",
"stop": "23:59"
}
]
}
}]
}
}

إضافة عدة مناطق جغرافية دفعة واحدة

Anchor link to

يأخذ geozones مصفوفة، لذا يمكن لمكالمة واحدة إنشاء دفعة كاملة. يتم التحقق من صحة الدفعة ككل قبل كتابة أي شيء: إذا تم رفض أي إدخال، تفشل المكالمة ولا يتم إنشاء أي منطقة جغرافية من هذا الطلب. يحدد الخطأ الإدخال المخالف من خلال موقعه في المصفوفة، محسوبًا من الصفر:

{
"status_code": 210,
"status_message": "geozones[301]: range: يجب أن يكون النطاق 50 مترًا على الأقل"
}

أصلح هذا الإدخال وأرسل الطلب مرة أخرى. عند النجاح، يحتوي GeoZones على المعرفات الرقمية الجديدة بنفس ترتيب الإدخالات التي أرسلتها.

يتم قبول الدفعات التي تزيد عن 500 إدخال وتقسيمها إلى أجزاء داخليًا. لا تزال المصفوفة بأكملها يتم التحقق من صحتها قبل الكتابة الأولى، ولكن الكتابة نفسها ليست ذرية عبر الأجزاء: يمكن أن يجتاز الإدخال التحقق من الصحة ويفشل في الكتابة، على سبيل المثال إذا تم حذف الإعداد المسبق الذي يسميه في هذه الأثناء. في هذه الحالة، تعود المكالمة 200 مع المعرفات التي تمت كتابتها بالإضافة إلى مصفوفة Errors تسمي الإدخال الذي أوقف التشغيل، لذلك لا يتم فقدان أي شيء تم إنشاؤه:

{
"status_code": 200,
"status_message": "OK",
"response": {
"GeoZones": [100016750, 100016751],
"Errors": [{ "index": 2, "message": "لم يتم العثور على الإعداد المسبق" }]
}
}

تكون Errors غائبة عند كتابة كل إدخال، لذا لا تتغير الاستجابة الناجحة بالكامل. تعني مصفوفة GeoZones الأقصر من المصفوفة التي أرسلتها دائمًا أنه لم يتم إنشاء بعض الإدخالات.

المناطق الجغرافية المضلعة

Anchor link to

أرسل polygon بدلاً من lat/lng/range لجعل المنطقة الجغرافية مضلعًا. polygon.vertices هي حلقة مرتبة من نقاط {lat, lng} تصف محيط الشكل:

{
"request": {
"auth": "yxoPUlwqm............pIyEX4H",
"application": "XXXXX-XXXXX",
"geozones": [{
"name": "Downtown mall — ground floor",
"cooldown": 60,
"polygon": {
"vertices": [
{ "lat": 40.70087797, "lng": -73.931851387 },
{ "lat": 40.70112456, "lng": -73.931602211 },
{ "lat": 40.70095321, "lng": -73.930987654 },
{ "lat": 40.70068912, "lng": -73.931233456 }
]
},
"content": "أهلاً بك! استمتع بخصم 15% على أول عملية شراء لك اليوم."
}]
}
}

يتم اشتقاق lat و lng و range من الحلقة — الدائرة التي يراقبها الجهاز بالفعل تتمركز على الشكل بنصف قطر يصل إلى أبعد رأس له (الحد الأدنى 50 مترًا). يتم رفض إرسال polygon مع lat/lng/range.

يمكنك إرسال الحلقة مفتوحة أو مغلقة — إذا كرر الرأس الأخير الرأس الأول، يسقط الخادم هذا التكرار الختامي قبل التحقق من الصحة. التحقق من صحة الرأس، على الحلقة الناتجة: من 3 إلى 100 رأس مميز. يتم رفض الحلقة أيضًا إذا كانت نقاطها متوازية، أو إذا تقاطعت حوافها ذاتيًا، أو إذا عبرت خط الطول المقابل.

updateGeoZone

Anchor link to

تحديث خصائص المنطقة الجغرافية.

POST https://api.pushwoosh.com/json/1.3/updateGeoZone

معلمات جسم الطلب

Anchor link to
المعلمة
النوع
مطلوبالوصف
authstringنعمرمز الوصول إلى API من لوحة تحكم Pushwoosh.
geoZoneIdstringنعممعرف المنطقة الجغرافية (Geozone ID) من طلب /addGeoZone.
namestringلااسم المنطقة الجغرافية الجديد.
cooldownintegerلافترة التهدئة للتحديث، بالثواني.
statusintegerلا0 - غير مفعل، 1 - مفعل.
contentstringلامحتوى إشعار الدفع للمنطقة الجغرافية. لا يمكن استخدامه مع presetCode.
clusterstringلااسم المجموعة الجديد. حدد null لإلغاء ربط المجموعة من المنطقة الجغرافية.
campaignstringلامعرف الحملة الجديد. حدد null لإلغاء ربط الحملة من المنطقة الجغرافية. إذا تم حذفه، لن تتغير قيمة الحملة. له أولوية أعلى من الحملة من الإعداد المسبق.
latnumberلاخط عرض المنطقة الجغرافية. لا يمكن دمجه مع polygon.
lngnumberلاخط طول المنطقة الجغرافية. لا يمكن دمجه مع polygon.
rangeintegerلاالنطاق الجديد بالأمتار. لا يمكن دمجه مع polygon.
polygonobjectلاحلقة جديدة من رؤوس {lat, lng} — تستبدل الشكل وتعيد اشتقاق lat/lng/range منه. انظر المناطق الجغرافية المضلعة. يعمل في كلا الاتجاهين: أرسله على منطقة جغرافية دائرية موجودة لتحويلها إلى مضلع، أو أرسل حلقة فارغة ({"vertices": []}) على منطقة جغرافية مضلعة موجودة لتحويلها مرة أخرى إلى دائرة. احذف polygon بالكامل لترك الشكل دون تغيير. نفس التحقق من صحة الرؤوس مثل addGeoZone.
timetableobjectلاالجدول الزمني للمنطقة الجغرافية. انظر المزيد من المعلومات أدناه.

مثال على الطلب

Anchor link to
{
"request": {
"auth": "yxoPUlwqm............pIyEX4H", // مطلوب، رمز الوصول إلى API من لوحة تحكم Pushwoosh
"geoZoneId": 100016750, // مطلوب، من طريقة /addGeoZone
"name": "new geozone name", // اختياري
"cooldown": 222, // بالثواني، اختياري
"status": 0, // اختياري، 0 - غير مفعل، 1 - مفعل
"presetCode": "BBBBB-AAAAA", // اختياري، لا يمكن استخدامه مع "content"
"content": "new geozone content", // اختياري، لا يمكن استخدامه مع "presetCode"
"cluster": "GEOZONE CLUSTER CODE", // اختياري. حدد null لإلغاء ربط المجموعة من المنطقة الجغرافية
"campaign": "CAMPAIGN_CODE", // اختياري. حدد null لإلغاء ربط الحملة من المنطقة الجغرافية
"lat": 10.56, // اختياري، خط عرض المنطقة الجغرافية
"lng": 12.523, // اختياري، خط طول المنطقة الجغرافية
"range": 500, // اختياري، نطاق المنطقة الجغرافية
"timetable": { // اختياري
"timezone": 1234, // بالثواني
"Mon": [ // الأيام المتاحة: Mon, Tue, Wed, Thu, Fri, Sat, Sun. إرسال الإشعارات
{
"start": "04:11",
"stop": "12:00"
}
],
"Sun": [
{ // فترة واحدة أو فترتان
"start": "01:11",
"stop": "17:00"
},
{
"start": "18:01",
"stop": "23:59"
}
]
}
}
}

deleteGeoZone

Anchor link to

إزالة المناطق الجغرافية من التطبيق.

POST https://api.pushwoosh.com/json/1.3/deleteGeoZone

معلمات جسم الطلب

Anchor link to
المعلمة
النوع
مطلوبالوصف
authstringنعمرمز الوصول إلى API من لوحة تحكم Pushwoosh.
applicationstringنعمرمز تطبيق Pushwoosh
geozonesstringنعممصفوفة من المعرفات أو معرف واحد لمنطقة جغرافية لإزالتها.

مثال على الطلب

Anchor link to
{
"request": {
"auth": "yxoPUlwqm............pIyEX4H", // مطلوب، رمز الوصول إلى API من لوحة تحكم Pushwoosh
"application": "XXXXX-XXXXX", // مطلوب، رمز تطبيق Pushwoosh
"geozones": [550, 526] // مطلوب، معرفات المناطق الجغرافية
}
}

addGeoZoneCluster

Anchor link to

إضافة مجموعة مناطق جغرافية (Geozone Cluster) إلى التطبيق.

POST https://api.pushwoosh.com/json/1.3/addGeoZoneCluster

معلمات جسم الطلب

Anchor link to
المعلمة
النوع
مطلوبالوصف
authstringنعمرمز الوصول إلى API من لوحة تحكم Pushwoosh.
applicationstringنعمرمز تطبيق Pushwoosh
namestringنعماسم المجموعة.
cooldownintegerنعمتأخير قبل أن يتمكن مستخدم واحد من تلقي نفس الرسالة من مجموعة المناطق الجغرافية، بالثواني.

مثال على الطلب

Anchor link to
{
"request": {
"auth": "yxoPUlwqm............pIyEX4H", // مطلوب، رمز الوصول إلى API من لوحة تحكم Pushwoosh
"application": "XXXXX-XXXXX", // مطلوب، رمز تطبيق Pushwoosh
"name": "Raccoon city", // مطلوب، اسم المجموعة
"cooldown": 3210 // مطلوب، بالثواني
}
}

deleteGeoZoneCluster

Anchor link to

إزالة مجموعة مناطق جغرافية من التطبيق.

POST https://api.pushwoosh.com/json/1.3/deleteGeoZoneCluster

معلمات جسم الطلب

Anchor link to
المعلمة
النوع
مطلوبالوصف
authstringنعمرمز الوصول إلى API من لوحة تحكم Pushwoosh.
applicationstringنعمرمز تطبيق Pushwoosh
geoZoneClusterstringنعممعرف مجموعة المناطق الجغرافية المراد إزالتها.

مثال على الطلب

Anchor link to
{
"request": {
"auth": "yxoPUlwqm............pIyEX4H", // مطلوب، رمز الوصول إلى API من لوحة تحكم Pushwoosh
"application": "XXXXX-XXXXX", // مطلوب، رمز تطبيق Pushwoosh
"geoZoneCluster": "EA1CE-69405" // مطلوب، معرف المجموعة الذي تم الحصول عليه من طلب /addGeoZoneCluster
}
}

listGeoZones

Anchor link to

استرداد قائمة بالمناطق الجغرافية للتطبيق.

POST https://api.pushwoosh.com/json/1.3/listGeoZones

معلمات جسم الطلب

Anchor link to
المعلمة
النوع
مطلوبالوصف
authstringنعمرمز الوصول إلى API من لوحة تحكم Pushwoosh.
applicationstringنعمرمز تطبيق Pushwoosh

مثال على الطلب

Anchor link to
{
"request": {
"auth": "yxoPUlwqm............pIyEX4H", // مطلوب، رمز الوصول إلى API من لوحة تحكم Pushwoosh
"application": "XXXXX-XXXXX" // مطلوب، رمز تطبيق Pushwoosh
}
}

listGeoZoneClusters

Anchor link to

استرداد قائمة بمجموعات المناطق الجغرافية للتطبيق.

POST https://api.pushwoosh.com/json/1.3/listGeoZoneClusters

معلمات جسم الطلب

Anchor link to
المعلمة
النوع
مطلوبالوصف
authstringنعمرمز الوصول إلى API من لوحة تحكم Pushwoosh.
applicationstringنعمرمز تطبيق Pushwoosh

مثال على الطلب

Anchor link to
{
"request": {
"auth": "yxoPUlwqm............pIyEX4H", // مطلوب، رمز الوصول إلى API من لوحة تحكم Pushwoosh
"application": "XXXXX-XXXXX" // مطلوب، رمز تطبيق Pushwoosh
}
}