deepseek-1.x-dev/src/Controller/ChatController.php

src/Controller/ChatController.php
<?php

namespace Drupal\deepseek\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\File\FileUrlGeneratorInterface;
use Drupal\Core\Theme\ThemeManagerInterface;
use Drupal\Core\Url;

/**
 * Returns responses for Deep seek routes.
 */
class ChatController extends ControllerBase {

  /**
   * {@inheritDoc}
   */
  public function __construct(
    protected FileUrlGeneratorInterface $fileUrlGenerator,
    protected ThemeManagerInterface $themeManager,
    protected ?ModuleExtensionList $module_handler = NULL,
  ) {
  }

  /**
   * Builds the response.
   */
  public function chat(): array {
    $url = Url::fromRoute('deepseek.ai_connect')->toString();
    $url_avatar = '';
    $logo_path = $this->themeManager->getActiveTheme()->getLogo();
    $logo_url = $this->fileUrlGenerator->generateAbsoluteString($logo_path);
    $user = $this->entityTypeManager()->getStorage('user')->load($this->currentUser()->id());
    if ($user->hasField('user_picture') && $user->get('user_picture')->entity) {
      $avatar = $user->get('user_picture')->entity->getFileUri();
      $url_avatar = $this->fileUrlGenerator->generateAbsoluteString($avatar);
    }
    // Render the chat interface.
    $build = [
      '#theme' => 'chat_template',
      '#attached' => [
        'library' => [
          'deepseek/chat',
        ],
        'drupalSettings' => [
          'deepseek' => [
            'avatar' => $url_avatar,
            'logo_site' => $logo_url,
            'url_agent' => $url,
            'url_module' => Url::fromUri('base:' . $this->module_handler->getPath('deepseek'), ['absolute' => TRUE])->toString(),
            'voice' => $this->config('deepseek.settings')->get('voice'),
            'provider' => $this->config('deepseek.settings')->get(key: 'provider'),
          ],
        ],
      ],
    ];
    $loadBootstrap = $this->config('deepseek.settings')->get('bootstrap');
    if ($loadBootstrap) {
      $build['#attached']['library'][] = 'deepseek/bootstrap';
    }
    return $build;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc