عندما يفشل استدعاء Watson قبل أن يصل إلى الخدمة، تحقق مما إذا كان الطلب الفاشل هو طلب رمز IAM. فالاستدعاء المُصادَق عليه بواسطة IAM قد يتصل بـIAM أولاً وبالخدمة ثانيًا.

في تطبيق يستخدم بالفعل Watson SDK المعني والاعتماد tunnel، امنح الكائنَين إعدادات الشبكة نفسها:

const tunnel = require('tunnel');
const AssistantV2 = require('ibm-watson/assistant/v2');
const { IamAuthenticator } = require('ibm-watson/auth');

const httpsAgent = tunnel.httpsOverHttp({
  proxy: { host: 'proxy.example', port: 8080 },
});

const network = { httpsAgent, proxy: false };
const authenticator = new IamAuthenticator({
  apikey: apiKey,
  ...network,
});
const assistant = new AssistantV2({
  version: serviceVersion,
  serviceUrl,
  authenticator,
  ...network,
});

أبقِ على apiKey وserviceVersion وserviceUrl الموجودة في التطبيق. تظل نقطتا نهاية API وIAM وجهتيهما المقصودتين؛ ومستمع الوكيل مكانه داخل الوكيل البرمجي. يمكن أن توفّر قائمة وكلاء HTTP عناوين مرشحة عندما يمكن الوصول إلى نقطتي نهاية الخدمة العامتين عبر وكيل تختاره.

ينشئ tunnel.httpsOverHttp مسار HTTPS عبر وكيل HTTP. ويمنع proxy: false حزمة SDK من تطبيق إعداد وكيل مدمج آخر فوق ذلك الوكيل المخصص.

إذا كنت قد قدّمت هذه الإعدادات سابقًا إلى assistant فقط، فالمصادق هو المكان الناقص الذي يجب فحصه. للمصادقة الأساسية وللرمز الحامل الصادر مسبقًا دورتا حياة مختلفتان للحصول على الرمز، لذا ينطبق مسار IAM الإضافي هذا على المصادق الشبكي المستخدم هنا.

مقالات ذات صلة