Khi một lệnh gọi Watson thất bại trước khi đến được dịch vụ, hãy kiểm tra xem yêu cầu thất bại có phải là yêu cầu token IAM không. Lệnh gọi được xác thực bằng IAM có thể liên hệ IAM trước và dịch vụ sau.

Trong ứng dụng đã dùng Watson SDK tương ứng và phụ thuộc tunnel, hãy cấp cùng cài đặt mạng cho cả hai đối tượng:

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,
});

Giữ nguyên apiKey, serviceVersion và serviceUrl hiện có của ứng dụng. Điểm cuối API và IAM vẫn là đích dự kiến của chúng; trình lắng nghe proxy thuộc về agent. danh sách proxy HTTP có thể cung cấp địa chỉ ứng viên khi cả hai điểm cuối dịch vụ công khai đều có thể truy cập qua proxy bạn chọn.

tunnel.httpsOverHttp thiết lập đường HTTPS qua proxy HTTP. proxy: false ngăn SDK áp dụng thêm một cấu hình proxy tích hợp khác chồng lên agent tùy chỉnh đó.

Nếu trước đây bạn chỉ cấp các cài đặt này cho assistant, thì trình xác thực chính là chỗ còn thiếu cần kiểm tra. Xác thực cơ bản và token bearer đã được cấp có vòng đời lấy token khác nhau, vì vậy đường IAM bổ sung này áp dụng cho trình xác thực dựa trên mạng được dùng ở đây.

Bài viết liên quan