나에게 긍정적인 COVID-19 뉴스를 문자로 보내는 서버리스 앱

에 대한



저는 매일 아침 일어나기 전에 SMS를 통해 COVID-19와 관련된 긍정적인 뉴스를 보내는 서버리스 애플리케이션을 구축했습니다.

이 진행 중인 팬데믹 기간 동안 제 문제는 너무 많은 뉴스 소비였으며 그 중 많은 부분이 저에게 부정적인 영향을 미쳤습니다. 나는 지금이 내 하루에 약간의 긍정성을 가져다주는 무언가를 만들 수 있는 절호의 기회라고 생각했습니다.

범주



흥미로운 통합.

Github 저장소




madebygps / 매일 긍정적인 뉴스 SMS 서버리스


COVID-19에 대한 긍정적인 뉴스를 문자 메시지로 보내는 서버리스 앱입니다.




프로젝트를 로컬에서 작동시키는 방법에 대한 비디오(원하는 경우 아래에 제공된 텍스트 지침)





👩🏽‍💻 코드 환경 설정 방법



Follow this tutorial and you will install VS Code and the necessary Azure extensions needed.

🛠 API 키 및 자격 증명 설정



필요할 것이예요:
  • TwilioSid, TwilioAuthToken, TwilioPhoneNumber

  • Azure account, CognitiveServicesEndpoint and TextAnalyticsApiKeyCredential 무료 - 웹/컨테이너 플랜을 사용하십시오. 여기에는 프리 티어에서 필요한 기능이 포함되어 있습니다. more info here
  • NewsApiKey

  • 📦 사용한 패키지



    이들은 프로젝트를 복제할 때 프로젝트에 포함되어야 하지만, 일부 오류가 있는 경우 다시 설치할 수 있습니다.

    트윌리오



    Install via .NET CLI

    dotnet add package Twilio
    


    사용

    using Twilio;
    using Twilio.Rest.Api.V2010.Account;
    


    TextAnalytics v3 미리보기



    Install via .NET CLI

    dotnet add package Azure.AI.TextAnalytics --version 1.0.0-preview.3
    


    사용

    using Azure.AI.TextAnalytics;
    


    🔑 local.settings.json 설정 방법



    명백한 이유로 내 local.settings.json 파일을 제외했습니다. 이러한 기록이 있으면 거기에 포함시키십시오.

    Microsoft timezone documentation

    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "<replace_with_your_webjobsstorage>",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet",
        "TextAnalyticsApiKeyCredential":"<replace>",
        "CognitiveServicesEndpoint":"<replace>",
        "TwilioSid":"<replace>",
        "TwilioAuthToken":"<replace>",
        "NewsApiKey":"<replace>",
        "TwilioPhoneNumber":"<replace>",
        "MyPhoneNumber":"<replace_with_number_you_ant_to_send_sms_to>",
        "WEBSITE_TIME_ZONE":"<replace_with_your_timezone"
      }
    }
    


    ⚡️ 로컬에서 실행하는 방법



    VS Code에서 왼쪽의 실행 탭을 선택한 다음 상단의 재생 버튼을 누릅니다.



    RunOnStartUp이란 무엇입니까?



    앱은 이후 한 번 실행됩니다.

    RunOnStartup=true
    


    true로 설정됩니다. 프로덕션에 배포하기 전에 remove this.

    📳 데모



    local.settings.json에 입력한 번호로 텍스트를 받게 됩니다.



    VS 코드 콘솔 출력에서 ​​보낸 스토리도 볼 수 있습니다.



    Twilio SMS dashboard에서도 볼 수 있습니다.



    🚀 Azure에 배포하는 방법



    Here is a written tutorial on how to Publish a Function to Azure

    My Youtube video also shows how to do this.

    트리거에서 RunOnStartUp을 제거하거나 false로 설정해야 합니다. 이쪽을 봐Microsoft doc

    ⏰ 앱 실행 시간 변경



    여기 이 줄에는 CRON 표현식이 있습니다.

    public static void Run([TimerTrigger("0 30 6 * * *", RunOnStartup=true)]TimerInfo myTimer, ILogger log)
    


    시간을 변경하고 싶으면 표현 부분을 변경하고, here are some examples.

    "0 30 6 * * *"
    


    🖼 MMS 기능



    나는 미국에 있기 때문에 내 전화번호more info here로 이미지를 보낼 수 있는데, 그것은 메시지 보내기 방식으로 이루어진다.

    static void SendMessage (string fromNumber, string toNumber, string articleUrl, string articleTitle, string imageUrl )
    


    미국이나 캐나다 이외의 지역에 있는 경우 자유롭게 제거하십시오.

    이미지에 아티클 URL이 없는 경우 기본값은 stock photo I got from Unsplash입니다.

    🗞 뉴스피드 미세 조정



    뉴스 API에서 반환된 JSON을 these parameters로 미세 조정할 수 있습니다. 간단히 newsAPIEndpointURL의 변수를 추가/제거/편집하세요.

    
    // NEWS API Search parameters and URL
    string searchKeyword = "Covid";
    string sortBy = "relevancy";
    string pageSize = "100";
    string searchLanguage = "en";
    string fromDate = DateTime.Today.AddDays (-1).ToString ("yyyy-MM-dd");
    var newAPIEndpointURL = $"https://newsapi.org/v2/everything?from={fromDate}&sortBy={sortBy}&pageSize={pageSize}&language={searchLanguage}&q={searchKeyword}&apiKey={newsApiKey}";
    


    👷🏽‍♀️ 알려진 문제 및 개선 영역


  • 보낸 이야기 중 일부는 반드시 긍정적일 필요는 없지만 "테스트 결과 양성"또는 "더 나은"과 같은 단어가 포함되어 있기 때문에 긍정적인 감정으로 반환됩니다. 감정 레이블 지정 방법을 조정하고 더 많은 텍스트 분석을 탐색하면 이를 개선할 수 있습니다. 아래에 몇 가지 예를 추가했습니다.
  • 오랫동안 프로그래밍을 하지 않았기 때문에 모범 사례(OOP 디자인 및 오류 처리)를 따르지 않을 수도 있다는 것을 알고 있습니다. 더 많은 연습과 경험을 쌓으면서 이를 개선하려고 노력할 것입니다.
  • 특정 기사에서 이Twilio error 이미지 크기로 인해 기사 이미지 크기를 확인하는 방법을 구현했습니다.

  • static double GetMediaFileSize (string imageUrl) {
                var fileSizeInMegaByte = 0.0;
                var webRequest = HttpWebRequest.Create (imageUrl);
                webRequest.Method = "HEAD";
    
                using (var webResponse = webRequest.GetResponse ()) {
                    var fileSize = webResponse.Headers.Get ("Content-Length");
                    fileSizeInMegaByte = Math.Round (Convert.ToDouble (fileSize) / 1024.0 / 1024.0, 2);
                }
    
                return fileSizeInMegaByte;
            }
    


    이미지가 4.9MB보다 큰 경우 기사 이미지를 올바른 크기로 알고 있는 기본 이미지로 설정합니다. 여기서 개선 사항은 기본 이미지로 변경하는 대신 이미지 크기를 조정하는 것입니다.

    💙 덕분에


  • Twilio의 놀라운 커뮤니티. 여기에 참여하고 싶다면(Do it 😊)이 있습니다.
  • 전원 제공 newsapi.org
  • 이 프로젝트 작업에 크레딧을 제공한 Twilio
  • AbsolutVision의 스톡 신문 사진

  • 👀 더 많은 예





    좋은 웹페이지 즐겨찾기