כאשר קריאת 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, המאמת הוא המקום החסר שכדאי לבדוק. לאימות בסיסי ולאסימון bearer שכבר הונפק יש מחזורי חיים שונים של קבלת אסימון, ולכן נתיב ה-IAM הנוסף הזה חל על המאמת מבוסס הרשת שמשמש כאן.

מאמרים קשורים