Hi,
ich versuche deine OpenAI SDK zu nutzen um ein Posting welches den User @OpenAI tagged via OpenAI zu beantworten. Dazu folgender Eventlistener. Kommt nur leider keine Antwort.
PHP
<?php
namespace wcf\system\event\listener;
use wcf\data\post\Post;
use wcf\data\post\PostAction;
use wcf\data\user\User;
use wcf\system\event\IEventListener;
use wcf\system\language\LanguageFactory;
use wcf\system\WCF;
use wcf\system\openAI\ScOpenAI;
class OpenAIMentionListener implements IEventListener
{
public function execute($eventObj, $className, $eventName)
{
$messageText = $eventObj->message;
//$userId = WCF::getUser()->userID;
$userId = WCF::getConfig()->get('openai_user_id');
$user = new User($userId);
$username = $user->username;
$pattern = "/@" . preg_quote($username, '/') . "\s?(.*)/";
if (preg_match($pattern, $messageText, $matches)) {
$textFollowingMention = $matches[1];
$openAIClient = ScOpenAI::getInstance();
$response = $openAIClient->createChatCompletion([
'messages' => [
['role' => $userId, 'content' => $textFollowingMention],
],
]);
$responseContent = json_decode((string)$response->getBody(), true);
$openAIResponse = $responseContent['choices'][0]['message']['content'];
$subject = 'RE: ' . $eventObj->subject;
$replyData = [
'subject' => $subject,
'message' => $openAIResponse,
'userID' => $userId,
'username' => $user->username,
'time' => TIME_NOW,
'languageID' => LanguageFactory::getInstance()->getDefaultLanguageID(),
];
$reply = new Post(null, $replyData);
$replyAction = new PostAction([$reply], 'create', ['data' => $replyData]);
$replyAction->executeAction();
}
}
}
Alles anzeigen
Woran könnte das liegen? Danke für die API!