เมื่อการเรียก Watson ล้มเหลวก่อนถึงบริการ ให้ตรวจสอบว่าคำขอที่ล้มเหลวคือคำขอโทเคน IAM หรือไม่ การเรียกที่ยืนยันตัวตนด้วย IAM สามารถติดต่อ IAM ก่อน แล้วจึงติดต่อบริการ

ในแอปพลิเคชันที่ใช้ Watson SDK ที่เกี่ยวข้องและ dependency 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 เท่านั้น authenticator คือจุดที่ขาดหายไปซึ่งต้องตรวจสอบ การยืนยันตัวตนแบบพื้นฐานและ bearer โทเคนที่ออกให้แล้วมีวงจรการรับโทเคนที่ต่างกัน ดังนั้นเส้นทาง IAM เพิ่มเติมนี้จึงใช้กับ authenticator ที่อิงเครือข่ายซึ่งใช้ที่นี่

บทความที่เกี่ยวข้อง