Wenn ein Watson-Aufruf fehlschlägt, bevor er den Dienst erreicht, prüfen Sie, ob die fehlgeschlagene Anfrage die IAM-Token-Anfrage ist. Ein über IAM authentifizierter Aufruf kann zuerst IAM und danach den Dienst kontaktieren.

In einer Anwendung, die bereits das passende Watson SDK und die Abhängigkeit tunnel verwendet, geben Sie beiden Objekten dieselben Netzwerkeinstellungen:

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

Behalten Sie die vorhandenen apiKey, serviceVersion und serviceUrl der Anwendung bei. Die API- und IAM-Endpunkte bleiben ihre vorgesehenen Ziele; der Proxy-Listener gehört in den Agenten. Die HTTP-Proxy-Liste kann Kandidatenadressen liefern, wenn beide öffentlichen Dienstendpunkte über einen von Ihnen gewählten Proxy erreichbar sind.

tunnel.httpsOverHttp baut den HTTPS-Pfad über den HTTP-Proxy auf. proxy: false verhindert, dass das SDK eine weitere integrierte Proxy-Konfiguration über diesen benutzerdefinierten Agenten legt.

Wenn Sie diese Einstellungen bisher nur assistant übergeben haben, ist der Authenticator die fehlende Stelle. Basisauthentifizierung und ein bereits ausgegebenes Bearer-Token haben unterschiedliche Lebenszyklen beim Tokenabruf, daher gilt dieser zusätzliche IAM-Pfad für den hier verwendeten netzwerkbasierten Authenticator.

Ähnliche Artikel