


Code beigefügt, detaillierte Schritte zum Verbinden von ChatGPT mit Feishu
ChatGPT ist in letzter Zeit populär geworden und der Chef ist auch bereit, uns zu bitten, ChatGPT mit Feishu zu verbinden. Nach einem Vormittag der Recherche haben wir uns endlich erfolgreich registriert und implementiert Feishu-Roboter zur Verbindung mit ChatGPT.
Lassen Sie mich die detaillierten Schritte für den Zugriff auf Feishu mit Ihnen teilen.
So greifen Sie auf Feishu zu
Die Interaktion zwischen Feishu und chatgpt ist wie folgt: Unser benutzerdefinierter Dienst fungiert als Vermittler für die Weiterleitung von Nachrichten.
Erstellen Sie einen Feishu-Roboter
1. Betreten Sie die offene Feishu-Plattform und wählen Sie die Erstellung einer selbst erstellten Unternehmensanwendung.
2 Klicken Sie nach dem Erstellen der Anwendung auf , um die Anwendung aufzurufen und den Roboter hinzuzufügen.
3. Wenn Sie nicht sicher sind, welche Berechtigungen erforderlich sind, können Sie sie zuerst alle aktivieren.
4, Ereignisabonnement konfigurieren. Für das Event-Abonnement muss zunächst eine Schnittstelle entwickelt werden, die Feishu überprüfen kann. Die Schnittstelle muss über das öffentliche Netzwerk erreichbar sein.
Der Code dieser Schnittstelle kann wie folgt bezeichnet werden:
@PostMapping(value = "/message") public FeishuEventDTO message(@RequestBody String body) { log.info("收到消息:{}", body); FeishuEventParams feishuEventParams = JSON.parseObject(body, FeishuEventParams.class); FeishuEventDTO eventDTO = new FeishuEventDTO(); eventDTO.setChallenge(feishuEventParams.getChallenge()); return eventDTO; } @Data public class FeishuEventParams { private String challenge; private String token; private String type; } @Data public class FeishuEventDTO { private String challenge; }
Eine Sache ist zu beachten dass diese Schule Die Verifizierungsschnittstelle hat dieselbe Adresse wie die Schnittstelle unten zum Empfangen von Feishu-Nachrichten, der Nachrichtentext ist jedoch unterschiedlich.
Das heißt, die Verifizierungsschnittstelle ist einmalig und muss nach der Verifizierung geändert werden.
Wir veröffentlichen diese Schnittstelle zunächst in einem Projekt, auf das über das öffentliche Netzwerk zugegriffen werden kann. Die Schnittstellenadresse lautet beispielsweise
https://www.php. cn/link/ 4aee31b0ec9f7bb7885473d95961e9a6
OK, jetzt ist die Konfiguration von Feishu im Grunde fertig. Hier ist die Logik, die wir verarbeiten müssen .
Verbindungslogik und Implementierung
Lassen Sie mich zunächst als Referenz auf die allgemeine Logik des Andockens unseres Unternehmens eingehen.
Nachdem ein Benutzer eine Nachricht an Feishu gesendet hat, leitet Feishu die Nachricht an unseren eigenen Dienst weiter.
Aber hier wird es ein Problem geben, das heißt, wenn mehrere Benutzer gleichzeitig Gespräche initiieren oder wenn viele Personen in einer großen Gruppe @unserem Roboter sind, müssen wir uns die Antworten aller nach Chatgpt-Anfragen merken Ergebnisse, es wird dieser Person genau antworten.
Da unser Unternehmen es derzeit für interne Tests verwendet und nicht möchte, dass die Implementierung zu kompliziert wird, verfolgen wir die Idee: Wenn die Sitzung jedes Benutzers an unseren Dienst weitergeleitet wird, steht der Sitzungsinhalt an erster Stelle Speichern Sie es in einer globalen ConcurrentLinkedQueue-Warteschlange und starten Sie dann einen Thread, um diese Warteschlange kontinuierlich zu nutzen.
Der generische Warteschlangentyp ist ein im Voraus erstelltes Objekt. Dieses Objekt speichert die Nachrichten-ID der aktuellen Nachricht, den Absender, den Frageinhalt usw.
Jedes Mal, wenn ein Objekt verbraucht wird, wird der Frageinhalt des Objekts an chatgpt gesendet. Nach Erhalt des Antwortergebnisses wird die von Feishu bereitgestellte Konversationsantwortschnittstelle aufgerufen, um dem Benutzer zu antworten. (Wenn die Parallelität relativ groß ist, kann sie hier asynchron gemacht werden).
Okay, das war's für die allgemeine Idee, werfen wir einen Blick auf den spezifischen Code.
1, öffnen Sie unser Projekt und stellen Sie das von chatgpt bereitgestellte Glas vor.
<dependency> <groupId>com.theokanning.openai-gpt3-java</groupId> <artifactId>service</artifactId> <version>0.10.0</version> </dependency>
2, schreiben Sie die obige Verifizierungsschnittstelle neu und ändern Sie sie, um Feishu-Nachrichten zu empfangen. (Ändern Sie den Schnittstellenpfad nicht)
@Slf4j @RestController @RequestMapping(value = "/query") public class QureyController { public static ConcurrentLinkedQueue<FeishuResponse> consumer = new ConcurrentLinkedQueue<>(); @PostMapping(value = "/message") public String message(@RequestBody String body) { log.info("收到飞书消息:{}", body); JSONObject jsonObject = JSONObject.parseObject(body); JSONObject header = jsonObject.getJSONObject("header"); String eventType = header.getString("event_type"); if ("im.message.receive_v1".equals(eventType)) { JSONObject event = jsonObject.getJSONObject("event"); JSONObject message = event.getJSONObject("message"); String messageType = message.getString("message_type"); if ("text".equals(messageType)) { String messageId = message.getString("message_id"); String content = message.getString("content"); JSONObject contentJson = JSON.parseObject(content); String text = contentJson.getString("text"); FeishuResponse feishuResponse = new FeishuResponse(); feishuResponse.setMessageId(messageId); feishuResponse.setQuery(text); log.info("投递用户消息,{}", JSON.toJSON(feishuResponse)); consumer.add(feishuResponse); } else { log.info("非文本消息"); } } return "suc"; } }
Die Struktur von FeishuResponse ist wie folgt.
@Data public class FeishuResponse { private String messageId; private String query; }
3, schreibe einen Aufgabenthread.
@Slf4j public class AutoSendTask implements Runnable { //你的chatgpt的key public static final String token = ""; public static OpenAiService openAiService = null; static { openAiService = new OpenAiService(token, Duration.ofSeconds(60)); } @Override public void run() { while (true) { try { FeishuResponse poll = consumer.poll(); if (poll == null) { log.info("no query,sleep 2s"); TimeUnit.SECONDS.sleep(2); } else { String query = this.query(poll.getQuery()); this.reply(poll, query); } } catch (InterruptedException e) { log.error("Thread exception...", e); } } } private String query(String q) { log.info("开始提问:{}", q); CompletionRequest completionRequest = CompletionRequest.builder() .prompt(q) .model("text-davinci-003") .maxTokens(2048) .echo(false) .build(); StringBuilder sb = new StringBuilder(); CompletionResult completion = openAiService.createCompletion(completionRequest); log.info("q:{},获取响应:{}", q, JSON.toJSONString(completion)); completion.getChoices().forEach(v -> { sb.append(v.getText()); }); String rs = sb.toString(); if (rs.startsWith("?")) { rs = rs.replaceFirst("?", ""); } if (rs.startsWith("nn")) { rs = rs.replaceFirst("nn", ""); } log.info("格式化后的rs:{}", rs); return rs; } private String reply(FeishuResponse poll, String rs) { JSONObject params = new JSONObject(); params.put("uuid", RandomUtil.randomNumbers(10)); params.put("msg_type", "text"); JSONObject content = new JSONObject(); content.put("text", rs); params.put("content", content.toJSONString()); String url = String.format("https://open.feishu.cn/open-apis/im/v1/messages/%s/reply", poll.getMessageId()); String tenantAccessToken = FeishuUtils.getTenantAccessToken(); String body = null; try (HttpResponse authorization = HttpUtil.createPost(url) .header("Authorization", "Bearer " + tenantAccessToken) .body(params.toJSONString()) .execute()) { body = authorization.body(); } return body; } }
Die Tool-Klasse zum Erhalten des Feishu-Tokens lautet wie folgt:
@Slf4j public class FeishuUtils { public static final String tokenUrl = "https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal/"; //构建一个cache 缓存飞书的token static Cache<String, String> tokenCache = CacheBuilder.newBuilder().expireAfterWrite(Duration.ofSeconds(3500)).build(); //这个是飞书应用的appid和key,可以在创建的飞书应用中找到 public static final String appId = ""; public static final String appKey = ""; public static String getTenantAccessToken() { String token = null; try { token = tokenCache.get("token", () -> { JSONObject params = new JSONObject(); params.put("app_id", appId); params.put("app_secret", appKey); String body; try (HttpResponse execute = HttpUtil.createPost(tokenUrl) .body(params.toJSONString()).execute()) { body = execute.body(); } log.info("获取飞书token:{}", body); if (StrUtil.isNotBlank(body)) { String tenantAccessToken = JSON.parseObject(body).getString("tenant_access_token"); tokenCache.put("token", tenantAccessToken); return tenantAccessToken; } return null; }); } catch (ExecutionException e) { throw new RuntimeException(e); } return token; } }
4, starten Sie einfach die Thread-Klasse.
Abschließend wird aus Datenschutzgründen der Effekt des Chatgpt-Gruppengesprächs nicht angezeigt.
Endlich
Da wir chatgpt nur mit einer Testeinstellung eingeführt haben, ist der Code relativ grob, wenn ja, hoffe ich Jeder wird mir verzeihen, wenn ich etwas Schlechtes schreibe.
Der Code in diesem Artikel führt auch zusätzliche Gläser ein: guava, hutool-all und fastjson.
Das obige ist der detaillierte Inhalt vonCode beigefügt, detaillierte Schritte zum Verbinden von ChatGPT mit Feishu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

DALL-E 3 wurde im September 2023 offiziell als deutlich verbessertes Modell gegenüber seinem Vorgänger eingeführt. Er gilt als einer der bisher besten KI-Bildgeneratoren und ist in der Lage, Bilder mit komplexen Details zu erstellen. Zum Start war es jedoch exklusiv

Die perfekte Kombination aus ChatGPT und Python: Erstellen eines intelligenten Kundenservice-Chatbots Einführung: Im heutigen Informationszeitalter sind intelligente Kundenservicesysteme zu einem wichtigen Kommunikationsinstrument zwischen Unternehmen und Kunden geworden. Um den Kundenservice zu verbessern, greifen viele Unternehmen auf Chatbots zurück, um Aufgaben wie Kundenberatung und Beantwortung von Fragen zu erledigen. In diesem Artikel stellen wir vor, wie Sie mithilfe des leistungsstarken ChatGPT-Modells und der Python-Sprache von OpenAI einen intelligenten Kundenservice-Chatbot erstellen und verbessern können

chatgpt kann in China verwendet werden, kann jedoch nicht registriert werden. Wenn Benutzer sich registrieren möchten, können sie zur Registrierung eine ausländische Mobiltelefonnummer verwenden. Beachten Sie, dass während des Registrierungsprozesses auf die Netzwerkumgebung umgestellt werden muss eine fremde IP.

Installationsschritte: 1. Laden Sie die ChatGTP-Software von der offiziellen ChatGTP-Website oder dem mobilen Store herunter. 2. Wählen Sie nach dem Öffnen in der Einstellungsoberfläche die Sprache aus. 3. Wählen Sie in der Spieloberfläche das Mensch-Maschine-Spiel aus 4. Geben Sie nach dem Start Befehle in das Chatfenster ein, um mit der Software zu interagieren.

In diesem Artikel stellen wir vor, wie man intelligente Chatbots mit ChatGPT und Java entwickelt, und stellen einige spezifische Codebeispiele bereit. ChatGPT ist die neueste Version des von OpenAI entwickelten Generative Pre-Training Transformer, einer auf neuronalen Netzwerken basierenden Technologie für künstliche Intelligenz, die natürliche Sprache verstehen und menschenähnlichen Text generieren kann. Mit ChatGPT können wir ganz einfach adaptive Chats erstellen

So verwenden Sie ChatGPT und Python, um die Funktion zur Erkennung von Benutzerabsichten zu implementieren. Einführung: Im heutigen digitalen Zeitalter ist die Technologie der künstlichen Intelligenz in verschiedenen Bereichen nach und nach zu einem unverzichtbaren Bestandteil geworden. Unter anderem ermöglicht die Entwicklung der Technologie zur Verarbeitung natürlicher Sprache (Natural Language Processing, NLP), dass Maschinen menschliche Sprache verstehen und verarbeiten können. ChatGPT (Chat-GeneratingPretrainedTransformer) ist eine Art von

So bauen Sie mit ChatGPTPHP einen intelligenten Kundendienstroboter. Einführung: Mit der Entwicklung der Technologie der künstlichen Intelligenz werden Roboter zunehmend im Bereich Kundendienst eingesetzt. Der Einsatz von ChatGPTPHP zum Aufbau eines intelligenten Kundendienstroboters kann Unternehmen dabei helfen, effizientere und personalisiertere Kundendienste anzubieten. In diesem Artikel wird erläutert, wie Sie mit ChatGPTPHP einen intelligenten Kundendienstroboter erstellen, und es werden spezifische Codebeispiele bereitgestellt. 1. Installieren Sie ChatGPTPHP und nutzen Sie ChatGPTPHP, um einen intelligenten Kundendienstroboter aufzubauen.

Die ChatGPT-Mac-Anwendung von Open AI ist jetzt für alle verfügbar, während sie in den letzten Monaten nur denjenigen mit einem ChatGPT Plus-Abonnement vorbehalten war. Die App lässt sich wie jede andere native Mac-App installieren, sofern Sie über ein aktuelles Apple S verfügen
