Jan 5, 2025
لا مزيد من استفتاءات واجهات برمجة التطبيقات، لا مزيد من التأخيرات. فقط تحديثات فورية عند اكتمال وظيفتك في الذكاء الاصطناعي، يتم تسليمها بشكل آمن وموثوق إلى نقطة النهاية المحددة لديك. سواء كنت تترجم المحتوى، تولد رؤى البيانات، أو تعالج مجموعات بيانات كبيرة، تضمن الويب هوك أنك دائمًا متزامن مع SharpAPI.
صورة بواسطة Christina @ wocintechchat.com على Unsplash
في هذه المقالة، سنرشدك إلى كيفية إعداد، وتمكين، واستهلاك webhooks SharpAPI في تطبيقك، مع أمثلة خاصة باللغات ونصائح للحصول على أفضل استفادة من هذه الميزة.
Webhooks وظائف الذكاء الاصطناعي هي إشعارات تلقائية تُرسل من SharpAPI إلى تطبيقك كلما انتهى معالجة وظيفة ذكاء اصطناعي. تتضمن هذه الإشعارات جميع التفاصيل ذات الصلة حول الوظيفة، مثل حالتها، نوعها، وأي أخطاء، مرفقة في حمولة JSON موقعة وآمنة.
بالإضافة إلى ذلك، يمكنك تكوين webhooks لتضمين نتيجة وظيفة الذكاء الاصطناعي مباشرة في الحمولة لتعزيز قدرات التكامل.

انتقل إلى لوحة إدارة Webhooks في SharpAPI. قم بتبديل مفتاح تمكين Webhooks لتشغيل إشعارات webhook لحسابك.
أدخل عنوان URL للنقطة النهائية التي يجب أن ترسل إليها SharpAPI إشعارات webhook. تأكد من أن نقطتك النهائية:
حدد سرًا فريدًا للتوقيع. يُستخدم هذا السر لتوقيع حمولات webhook، مما يضمن أن تطبيقك يمكنه التحقق من صحة كل إشعار. تعامل مع هذا السر ككلمة مرور—احتفظ به آمنًا وقم بتحديثه فقط عند الضرورة.
حدد مربع تضمين نتيجة وظيفة الذكاء الاصطناعي لتضمين نتيجة وظيفة الذكاء الاصطناعي مباشرة في حمولة webhook تحت معلمة result.
انقر على حفظ، وستكون إعدادات webhook جاهزة للاستخدام.
بمجرد تمكين webhooks، يرسل SharpAPI طلب HTTP POST إلى عنوان URL للويب المحدد عند اكتمال وظيفة الذكاء الاصطناعي.
إليك ما يتضمنه الطلب:
مثال على رأس User-Agent لتحديد طلبات webhook:
User-Agent: SharpAPIWebhook/1.0
بدون نتيجة الوظيفة:
{
"id": "bf683177-3a48-47d1-9c4e-0b4de39517fa",
"status": "success",
"type": "content_translate"
}
مع تضمين نتيجة الوظيفة:
{
"id": "bf683177-3a48-47d1-9c4e-0b4de39517fa",
"status": "success",
"type": "content_translate",
"result": {
"content": "ciao",
"from_language": "English",
"to_language": "Italian"
}
}
إذا كنت تريد تكوين مكالمات webhook لوظائف الذكاء الاصطناعي الفردية، يمكنك استخدام Webhooks مخصصة على مستوى الوظيفة. لتمكين ذلك:
Job-Webhook مع عنوان URL للويب عند إرسال الوظيفة.تأكد من أن عنوان URL المقدم يلبي هذه المتطلبات:
لضمان معالجة تطبيقك لإشعارات webhook بسلاسة، اتبع أفضل الممارسات التالية:
احتفظ بسجلات لكل مكالمة webhook يتلقاها تطبيقك. قم بتضمين تفاصيل مثل الطوابع الزمنية، الرؤوس، والحمولات للمساعدة في التصحيح أو التدقيق.
استجب برمز حالة HTTP 2xx بمجرد تلقيك للويب هوك. إذا كانت منطق المعالجة لديك تستغرق وقتًا طويلاً، قم بنقلها إلى عامل خلفي للحفاظ على استجابة النقطة النهائية الخاصة بك.
يقوم SharpAPI بإعادة محاولة إشعارات webhook حتى ثلاث مرات في حالة الفشل. تأكد من أن تطبيقك يمكنه التعامل مع الإشعارات المكررة دون انقطاع.
راقب أداء وإتاحة نقطتك النهائية لضمان قدرتها على التعامل مع حركة مرور webhook بكفاءة. استخدم أدوات مثل Sentry أو New Relic للحصول على رؤى حول الاختناقات المحتملة.
للتحقق من أن إشعار webhook صادر من SharpAPI ولم يتم العبث به، تحقق من صحة رأس X-Signature باستخدام السر المقدم. أدناه أمثلة على الكود للتحقق من التوقيع في أربع لغات برمجة مختلفة:
$signature = $_SERVER['HTTP_X_SIGNATURE'] ?? '';
$payload = file_get_contents('php://input');
$computedSignature = hash_hmac('sha256', $payload, $secret);
if (hash_equals($computedSignature, $signature)) {
// التوقيع صالح
} else {
// التوقيع غير صالح
}
const crypto = require('crypto');
const signature = req.headers['x-signature'] || '';
const payload = JSON.stringify(req.body);
const computedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
if (crypto.timingSafeEqual(Buffer.from(computedSignature), Buffer.from(signature))) {
// التوقيع صالح
} else {
// التوقيع غير صالح
}
import hmac
import hashlib
signature = request.headers.get('X-Signature', '')
payload = request.get_data(as_text=True)
computed_signature = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()
if hmac.compare_digest(computed_signature, signature):
# التوقيع صالح
else:
# التوقيع غير صالح
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
string signature = Request.Headers["X-Signature"] ?? string.Empty;
string payload;
using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
{
payload = await reader.ReadToEndAsync();
}
using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secret)))
{
var computedSignatureBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(payload));
string computedSignature = BitConverter.ToString(computedSignatureBytes).Replace("-", "").ToLower();
if (computedSignature.Equals(signature, StringComparison.OrdinalIgnoreCase)) {
// التوقيع صالح
} else {
// التوقيع غير صالح
}
}
عملاؤك يحتاجون بالفعل إلى الذكاء الاصطناعي. احصل على أجر مقابل التوصية بأبسط طريقة لإضافته.