Discord를 사용하여 GitHub에서 제품 지원

나는 지금 재미있는 실험을 진행하고 있다. Discord 를 사용하여GitHub 메모리 라이브러리에서 실시간 채팅 제품 지원을 제공한다.이 문서에서는 Discord 채널에 대한 액세스를 제어하기 위해 PHP를 사용하여 고객 지원 포털을 만드는 방법을 학습합니다.
요컨대 문제는 내가 문제의 추적기80+ GitHub repos에서 각종 요청을 받았는데 이런 요청은 제품의 실제 문제가 아니라 도움을 필요로 하는 사람들이다.문제 추적기에서 문제를 열면 다음과 같습니다.
  • 제품 자체의 실제 결함.
  • 문서의 결함(예: 문서 부족).
  • 기능 요청
  • 비록 이것은 위장된 문서 문제일 수도 있지만, 일부 내용과 문제 추적기가 완전히 호환되지 않는 것을 이해하는 데 도움을 요청합니다.지원 요청에 대해 딱딱한'문제 종료'가 없었기 때문이다.이 질문들은 수년 동안 계속될 것이다. 왜냐하면 사람들은 상대방이 제품을 어떻게 사용하는지 알고 있다는 긍정적인 대답을 기다리기 때문이다.
    나의 이전 해결 방안은 포럼 소프트웨어를 사용하는 것이다.가능하지만 누구나 며칠이 걸려야 지원 요청을 알아차리고 회답을 받을 수 있다.대다수의 사람들은 실시간으로 왔다갔다하며 토론할 수 있는 해결 방안을 더욱 좋아한다.
    대부분의 실시간 채팅 기술 지원 솔루션은 비싸고 주로 텍스트 기반이다.Discord 에 들어가기: 무료 텍스트, 오디오, 동영상 채팅 시스템그러나 Discord 자체는 다음 워크플로우를 처리할 준비가 되어 있지 않습니다.
  • 사용자가 채널에 들어와 자신과 그들의 문제를 발표한다.
  • 사용자 피지원자가 직접 메시지를 받았습니다.
  • 지원 요청이 완료되면 사용자를 시스템에서 가볍게 밀어냅니다.
  • 다음 사용자에게 1-3단계를 반복합니다.
  • 내가 여러 포럼을 운영한 경험에 따르면 지원을 간소화하기 위해 공개적으로 방문할 수 있는 것은 두 가지가 중요하다.
  • Discord 채널에 대한 액세스를 정확하게 제어하여 로봇 등 지원 메커니즘의 남발을 방지한다.
  • 수신 사용자에 대한 중요 메타 정보(소스 GitHub repo, 라이센스 정보 등)를 수집합니다.
  • 기술 지원 채널에 Discord 계정과 새 "서버"를 생성한 후 누구나 할 수 있는 일(파일 업로드, 채팅 기록 보기, 메시지 사이의 시간 지연 등)의 설정을 확인하고 조정합니다.일단 요구를 충족시키면 서버/채널 접근을 제어하는 부족한 위치를 인코딩해야 한다.
    우리는 Discord SDK for PHP를 사용하여 기본적인 포털 페이지를 만들고 정보를 Discord 채널에 보내며 임시로 일회용 초대장을 만들고 사용자를 Discord로 다시 지정할 것입니다.이것은 실시간 지원 시스템의 기초를 이루고 인증코드를 해결하거나 테이프를 통해 결제를 받아서 접근을 관리할 수 있도록 확장할 수 있다.유효한 invite 코드가 없으면 아무도 들어갈 수 없습니다. 스크립트의 모든 검사가 통과되었을 때만 초대장을 보낼 수 있습니다.
    <?php
        require_once "support/sdk_discord.php";
        require_once "support/http.php";
    
        function DisplayError($title, $msg)
        {
            // Output website header here.
    
    ?>
    <div class="contentwrap">
    <div class="contentwrapinner">
    <h1><?=htmlspecialchars($title)?></h1>
    
    <p><?=$msg?></p>
    </div>
    </div>
    <?php
    
            // Output website footer here.
    
            exit();
        }
    
        $githubuser = "[YOUR_GITHUB_USER]";
        $webhookurl = "[CHANNEL_WEBHOOK_URL]";
        $bottoken = "[YOUR_BOT_TOKEN]";
        $channelid = "[INVITE_CHANNEL_ID]";
    
        if (!isset($_SERVER["HTTP_REFERER"]))  DisplayError("Missing Referrer", "This page was accessed directly.  Please enter via a <a href=\"https://github.com/" . $githubuser . "/\">valid repository on GitHub</a>.");
    
        // Check the HTTP referer header to verify the user is coming from a valid repository.
        $url = HTTP::ExtractURL($_SERVER["HTTP_REFERER"]);
        if ($url["host"] !== "github.com" || strncmp($url["path"], "/" . $githubuser . "/", strlen("/" . $githubuser . "/")) != 0)  DisplayError("Invalid Referrer", "This page was accessed incorrectly.  Please enter via the relevant <a href=\"https://github.com/" . $githubuser . "/\">repository on GitHub</a>.");
    
        // Send initial message to the main channel.
        $options = array(
            "content" => str_replace("https://", "", HTTP::CondenseURL($url))
        );
    
        $result = DiscordSDK::SendWebhookMessage($webhookurl, $options);
        if (!$result["success"])  DisplayError("Discord Error", "An error occurred while attempting to access Discord.  " . htmlspecialchars($result["error"] . " (" . $result["errorcode"] . ")"));
    
        // Create a temporary invite.
        $discord = new DiscordSDK();
        $discord->SetAccessInfo("Bot", $bottoken);
    
        $options = array(
            "max_age" => 1800,
            "max_uses" => 1,
            "unique" => true,
            "temporary" => true
        );
    
        $result = $discord->RunAPI("POST", "channels/" . $channelid . "/invites", $options);
        if (!$result["success"])  DisplayError("Discord Error", "An error occurred while attempting to setup Discord.  " . htmlspecialchars($result["error"] . " (" . $result["errorcode"] . ")"));
    
        // Redirect the user's browser to the invite.
        $url = "https://discord.gg/" . $result["data"]["code"];
    
        header("Location: " . $url);
    ?>
    
    위의 PHP 스크립트는 액세스 가능한 공용 웹 서버에 있습니다.유효한 태그 및 정보를 사용하여 다양한 문자열 자리 표시자를 수정합니다.여기에는 Discord SDK for PHP 저장소에 Discord Webhook과 Bot을 설정하는 방법에 대한 단계별 설명이 있습니다.
    위의 스크립트를 구성하면 저장소에 연결하고 Discord 지원 채널에서 방문자를 받을 수 있습니다.재구매 계약에 대한 읽어보기 파일 가격 인하에 동적 단추를 추가합니다.
    [![Discord](https://img.shields.io/discord/INVITE_CHANNEL_ID?label=chat&logo=discord)](URL_OF_SCRIPT)
    
    정확한 값으로 INVITE_CHANNEL_IDURL_OF_SCRIPT 를 바꾸다.변경 사항을 저장소에 제출합니다.

    만약 모든 것이 순조롭다면, Discord 로고, 단어 'chat', 온라인 사용자 수가 있는 차단/단추가respository에 나타날 것입니다.개인 네트워크 탐색/익명 창을 사용하면 '새로 만들기' 단추를 누르면 사용자가 불화를 일으킬 수 있는지 확인할 수 있습니다.
    Discord 채널은 소스 저장소의 사용자만 액세스할 수 있습니다.다른 모든 사람들은 거부될 것이다. (예를 들어, 누군가가 원천 환매를 통해 지점을 방문할 것이다.)
    새로운 실시간 채팅 제품 지원을 누리세요!

    좋은 웹페이지 즐겨찾기