Když volání Watsonu selže dřív, než dorazí do služby, zkontrolujte, zda neúspěšný požadavek není požadavek na token IAM. Volání autentizované přes IAM může nejprve kontaktovat IAM a teprve potom službu.

V aplikaci, která už používá příslušnou sadu Watson SDK a závislost tunnel, předejte oběma objektům stejné síťové nastavení:

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

Zachovejte stávající apiKey, serviceVersion a serviceUrl aplikace. Koncové body API a IAM zůstávají svými zamýšlenými cíli; naslouchající proxy patří do agenta. Seznam HTTP proxy může nabídnout kandidátní adresy, když lze k oběma veřejným koncovým bodům služby přistupovat přes proxy, kterou zvolíte.

tunnel.httpsOverHttp vytváří cestu HTTPS přes HTTP proxy. proxy: false brání sadě SDK v tom, aby na tohoto vlastního agenta aplikovala další vestavěnou konfiguraci proxy.

Pokud jste tato nastavení dříve předávali jen objektu assistant, chybějícím místem ke kontrole je autentizátor. Základní ověřování a již vydaný bearer token mají odlišné životní cykly získávání tokenu, takže tato dodatečná cesta IAM platí pro síťový autentizátor použitý zde.

Související články