Packages
messenger_bot
0.7.1
1.3.0
1.2.0
retired
1.1.0
retired
1.0.0
retired
1.0.0-rc.8
retired
1.0.0-rc.7
retired
1.0.0-rc.6
retired
1.0.0-rc.5
retired
1.0.0-rc.4
retired
1.0.0-rc.3
retired
1.0.0-rc.2
retired
1.0.0-rc.1
retired
1.0.0-beta9
retired
1.0.0-beta8
retired
1.0.0-beta7
retired
1.0.0-beta6
retired
1.0.0-beta5
retired
1.0.0-beta4
retired
1.0.0-beta3
retired
1.0.0-beta2
retired
1.0.0-beta10
retired
1.0.0-beta1
retired
0.9.2
retired
0.9.1
retired
0.9.0
retired
0.8.2
retired
0.8.1
retired
0.8.0
retired
0.7.3
retired
0.7.2
retired
0.7.1
retired
0.7.0
retired
0.6.0
retired
0.5.2
retired
0.5.1
retired
0.5.0
retired
0.4.0
retired
0.3.0
retired
0.2.1
retired
0.2.0
retired
0.1.0
retired
Unofficial Facebook Messenger Platform chatbot client and webhook handler
Retired package: Deprecated
Current section
Files
Jump to
Current section
Files
lib/messenger_bot/components/message/button.ex
defmodule MessengerBot.Component.Message.Button do
@moduledoc """
Structure and type for button
"""
@derive [Poison.Encoder]
defstruct [:type, :title, :payload, :url, :webview_height_ratio,
:messenger_extensions, :fallback_url, :webview_share_button,
:payment_summary, :share_contents]
@type t :: %__MODULE__{
type: String.t,
title: String.t,
payload: String.t,
url: String.t,
webview_height_ratio: String.t,
messenger_extensions: boolean(),
fallback_url: String.t,
webview_share_button: String.t,
payment_summary: Map.t,
share_contents: Map.t
}
@doc """
Function to define url button with minimum requirements
"""
@spec url_button(Map.t) :: __MODULE__.t
def url_button(%{type: _, title: _, url: _} = fields) do
Map.merge(%__MODULE__{}, fields)
end
@doc """
Function to define postback button with exact requirements
"""
@spec postback_button(Map.t) :: __MODULE__.t
def postback_button(%{type: type, title: title, payload: payload}) do
%__MODULE__{type: type, title: title, payload: payload}
end
@doc """
Function to define call button with exact requirements
"""
@spec call_button(Map.t) :: __MODULE__.t
def call_button(%{title: title, payload: payload}) do
%__MODULE__{type: "phone_number", title: title, payload: payload}
end
@doc """
Function to define share button
"""
@spec share_button() :: __MODULE__.t
def share_button do
%__MODULE__{type: "element_share"}
end
@spec share_button(Map.t) :: __MODULE__.t
def share_button(%{share_contents: share_contents}) do
%__MODULE__{type: "element_share", share_contents: share_contents}
end
@doc """
Function to define postback button with exact requirements
"""
@spec buy_button(Map.t) :: __MODULE__.t
def buy_button(%{type: type, title: title, payload: payload,
payment_summary: payment_summary}) do
%__MODULE__{type: type, title: title, payload: payload,
payment_summary: payment_summary}
end
@doc """
Function to define postback button with exact requirements
"""
@spec login_button(Map.t) :: __MODULE__.t
def login_button(%{type: type, url: url}) do
%__MODULE__{type: type, url: url}
end
@doc """
Function to define logout button
"""
@spec logout_button() :: __MODULE__.t
def logout_button do
%__MODULE__{type: "account_unlink"}
end
end