LaTeX 표기 수식을 이미지로 반환하는 LINE bot 만들기

$ax^2+bx+c=0$ 와 같이 $기호로 LaTeX 표기의 수식을 둘러싸면, 이미지가 반송됩니다. 또한 하나의 메시지에 대해 하나의 수식을 반환할 수 있습니다.

LaTeX 표기에 대한 자세한 내용은 h tp // w w.ぁx-cmd. 이 m을 참조하십시오.

친구 추가



여기에서 친구 추가를 할 수 있습니다.

개발



다음 참고를 읽고 구현했습니다.

참고


  • htps : // 기주 b. 코 m / ぃね / ぃねーぼ tsdk
  • htps : //에서 ゔぇぺぺrs. 네. 비 · 자 / 레후 렌세 / 메사 긴 g 아피 /
  • htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 짱 rt / 닌후 g et p cs / cs / fu r mu s

  • Google Chart API 수식은 더 이상 사용되지 않으므로 언제 사용할 수 없는지 알 수 없습니다.
    CGI 모듈을 사용하는 이유는 +와 같은 기호를 인코딩해야하기 때문입니다.

    callback.rb
    class LinebotController < ApplicationController
      require 'line/bot'
      require 'cgi'
    
      protect_from_forgery :except => [:callback]
    
      def client
        @client ||= Line::Bot::Client.new { |config|
          config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
          config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
        }
      end
    
      def callback
        body = request.body.read
    
        signature = request.env['HTTP_X_LINE_SIGNATURE']
        unless client.validate_signature(body, signature)
          head :bad_request
        end
    
        events = client.parse_events_from(body)
    
        events.each { |event|
          case event
          when Line::Bot::Event::Message
            case event.type
            when Line::Bot::Event::MessageType::Text
              if event.message['text'].include?('$')
                formula = CGI.escape(event.message['text'].match(/(?<=\$)(.*)(?=\$)/).to_s())
                message = {
                  type: "image",
                  originalContentUrl: "https://chart.apis.google.com/chart?cht=tx&chl=#{formula}",
                  previewImageUrl: "https://chart.apis.google.com/chart?cht=tx&chl=#{formula}"
                }
                client.reply_message(event['replyToken'], message)
              end
            end
          end
        }
    
        head :ok
      end
    end
    

    좋은 웹페이지 즐겨찾기