Class: ChatSDK::Twilio::EventParser

Inherits:
Object
  • Object
show all
Defined in:
lib/chat_sdk/twilio/event_parser.rb

Class Method Summary collapse

Class Method Details

.parse(params) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/chat_sdk/twilio/event_parser.rb', line 7

def parse(params)
  return [] unless params.is_a?(Hash) && params["MessageSid"]

  author = ChatSDK::Author.new(
    id: params["From"] || "unknown",
    name: params["From"] || "unknown",
    platform: :twilio,
    bot: false
  )

  attachments = extract_attachments(params)

  text = params["Body"] || ""
  text = "#{text}\n#{attachments.map { |a| a[:url] }.join("\n")}" if attachments.any? && !text.empty?
  text = attachments.map { |a| a[:url] }.join("\n") if attachments.any? && (params["Body"].nil? || params["Body"].empty?)

  msg = ChatSDK::Message.new(
    id: params["MessageSid"],
    text: text,
    author: author,
    thread_id: params["MessageSid"],
    channel_id: params["To"] || "unknown",
    platform: :twilio,
    raw: params
  )

  [ChatSDK::Events::DirectMessage.new(
    message: msg,
    thread_id: params["MessageSid"],
    channel_id: params["To"] || "unknown",
    platform: :twilio,
    adapter_name: :twilio,
    raw: params
  )]
end