Wanneer een Watson-aanroep mislukt voordat de service wordt bereikt, controleer dan of het mislukte verzoek het IAM-tokenverzoek is. Een met IAM geauthenticeerde aanroep kan eerst IAM contacteren en daarna de service.

Geef in een applicatie die de betreffende Watson SDK en de tunnel-afhankelijkheid al gebruikt, dezelfde netwerkinstellingen aan beide objecten:

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

Behoud de bestaande apiKey, serviceVersion en serviceUrl van de applicatie. Het API- en IAM-eindpunt blijven hun bedoelde bestemmingen; de proxylistener hoort bij de agent. lijst met HTTP-proxy’s kan kandidaatadressen leveren wanneer beide openbare service-eindpunten bereikbaar zijn via een proxy die u kiest.

tunnel.httpsOverHttp legt het HTTPS-pad via de HTTP-proxy aan. proxy: false voorkomt dat de SDK nog een ingebouwde proxyconfiguratie bovenop die aangepaste agent toepast.

Als u deze instellingen eerder alleen aan assistant gaf, is de authenticator de ontbrekende plek om te controleren. Basisauthenticatie en een al uitgegeven bearer-token hebben verschillende levenscycli voor het verkrijgen van tokens, dus dit extra IAM-pad geldt voor de netwerkgebaseerde authenticator die hier wordt gebruikt.

Gerelateerde artikelen