ANS-0951 · SERVICES WEB ET INTéGRATIONS

Comment intégrer NetSuite à Slack à l’aide de webhooks et résoudre les erreurs 500

Ce guide décrit la procédure d’envoi de données JSON vers Slack via des webhooks entrants, en mettant l’accent sur l’encodage UTF-8 approprié afin d’éviter les erreurs d’intégration courantes.

Solution courte

L'intégration de NetSuite à Slack via des webhooks entrants nécessite l'envoi d'une charge utile JSON à l'aide d'une requête HTTP POST. Veillez à ce que le corps de la requête soit correctement encodé en UTF-8 et utilisez les méthodes client HTTP appropriées. Il est essentiel de résoudre les problèmes d'encodage et d'utiliser les modules SuiteScript recommandés pour les requêtes HTTP afin de garantir la réussite de l'intégration et d'éviter les erreurs internes 500.

Scénario

Les utilisateurs qui tentent d’intégrer NetSuite à Slack via des webhooks entrants peuvent rencontrer des réponses de type « 500 Internal Server Error ». Cela se produit généralement lorsque la requête HTTP POST, en particulier la charge utile JSON, n’est pas correctement formatée ou encodée, ce qui empêche le point de terminaison du webhook de Slack de traiter les données comme prévu.

Solution

L’intégration de NetSuite à Slack via des webhooks entrants implique l’envoi d’une charge utile JSON par le biais d’une requête HTTP POST. Un aspect essentiel pour une intégration réussie consiste à garantir l’encodage correct du corps de la requête, notamment en le convertissant en octets UTF-8.

Le code conceptuel suivant illustre les principes de l’envoi d’une requête HTTP POST et de la gestion de l’encodage des caractères. Bien que l’implémentation spécifique présentée soit en Java, les concepts sous-jacents de construction d’une requête HTTP POST, de définition des en-têtes, et de garantir l’encodage UTF-8 sont directement applicables lors du développement d’intégrations dans l’environnement SuiteScript de NetSuite, généralement à l’aide des modules N/http

ou N/https

pour les requêtes HTTP et N/encode

pour les opérations d’encodage.nn

nstatic void sendPost(String body) throws Exception {nn    String url  "https://hooks.slack.com/services/magic/url";n    URL obj  new URL(url);n    HttpsURLConnection con  (HttpsURLConnection) obj.openConnection();nn    //add reuqest headern    con.setRequestMethod("POST");n    con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NTn10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)

Chrome/53.0.2785.116 Safari/537.36");n    con.setRequestProperty("Accept-Language", "en-US,en;q0.5");nn    // Send post requestn    con.setDoOutput(true);n    DataOutputStream wr  new DataOutputStream(con.getOutputStream());n    wr.write(body.getBytes("UTF-8"));n    wr.flush();n    wr.close();nn    int responseCode  con.getResponseCode();n    System.out.println("

Sending 'POST' request to URL : " + url);n    System.out.println("Response Code : " + responseCode);nn    BufferedReader in  new BufferedReader(n            new InputStreamReader(con.getInputStream()));n    String inputLine;n    StringBuffer response  new StringBuffer();nn    while ((inputLine  in.readLine()) ! null) {n        response.append(inputLine);n    }n    in.close();nn    //print resultn    System.out.println(response.toString());nn}n

Lorsque vous rencontrez des problèmes de conversion de caractères, notamment après des exportations ou des migrations de données, il peut s’avérer nécessaire d’appliquer des corrections d’encodage. L’exemple Java suivant illustre une méthode permettant de corriger les problèmes d’encodage, tels que la conversion de windows-1252

vers UTF-8

. Dans SuiteScript, des transformations d’encodage similaires peuvent être réalisées à l’aide du module N/encode

.nn

String v  "st, désolé, m";

System.out.println(v);

System.out.println(fixEncodingIssue(fixEncodingIssue(fixEncodingIssue(v))));n// Results in "st, désolé, m"nnpublic static String fixEncodingIssue(String value) {n    if (value  null) {n        return value;n    }nn    final Charset fromCharset  Charset.forName("windows-1252");n    final Charset toCharset  Charset.forName("UTF-8");n    String fixed  new String(value.getBytes(fromCharset), toCharset);n    return fixed;n}n

Pour publier des messages sur Slack, le format JSON requis est simple :n

n{"username":"s1", "text":"my message"}n

Au sein de NetSuite, il est possible de développer des intégrations permettant de publier sur des canaux Slack à l’aide de SuiteScript. Pour effectuer des requêtes HTTP, il est recommandé d’utiliser les modules N/http

ou N/https

dans SuiteScript 2.x, conformément aux meilleures pratiques actuelles.

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Services Web et intégrations

Parler à un consultant