ExLine.Api.RichMenu (ExLine v0.1.0)

Copy Markdown View Source

Rich menu API: create/manage rich menus, upload their images, set the default, link per-user, manage aliases, and run bulk (batch) operations.

Image up/download go through the api-data.line.me host. Build a rich menu object with rich_menu/3 (+ size/1,2, area/2, bounds/4; actions come from ExLine.Message.Action).

Ref: https://developers.line.biz/en/reference/messaging-api/#rich-menu

Summary

Functions

A tappable area: bounds from bounds/4, action from ExLine.Message.Action.

Runs a batch of rich menu operations (link/unlink/setDefault…). Option :resume_request_key to resume a previous request. Ref: #batch-control-rich-menus-of-users

Gets the progress of a batch request. Ref: #get-batch-control-rich-menus-progress-status

Pixel bounds of an area.

Clears the default rich menu. Ref: #cancel-default-rich-menu

Creates a rich menu; returns {:ok, %{"richMenuId" => id}}. Ref: #create-rich-menu

Creates a rich menu alias. Ref: #create-rich-menu-alias

Deletes a rich menu. Ref: #delete-rich-menu

Deletes a rich menu alias. Ref: #delete-rich-menu-alias

Gets a rich menu. Ref: #get-rich-menu

Gets a rich menu alias. Ref: #get-rich-menu-alias-by-id

Gets the default rich menu id. Ref: #get-default-rich-menu-id

Gets the rich menu id linked to a user. Ref: #get-rich-menu-id-of-user

Downloads the rich menu image (raw bytes). Ref: #download-rich-menu-image

Links a rich menu to a user. Ref: #link-rich-menu-to-user

Links a rich menu to multiple users. Ref: #link-rich-menu-to-users

Lists rich menus. Ref: #get-rich-menu-list

Lists rich menu aliases. Ref: #get-rich-menu-alias-list

Rich menu object. size is %{width:, height:} (see size/1,2), areas is a list from area/2. Options: :name, :chat_bar_text, :selected.

Sets the default rich menu for all users. Ref: #set-default-rich-menu

Uploads the rich menu image (content_type "image/jpeg" or "image/png").

Rich menu size. :full → 2500×1686, :compact → 2500×843.

Custom rich menu size.

Unlinks a user's rich menu. Ref: #unlink-rich-menu-from-user

Unlinks the rich menu from multiple users. Ref: #unlink-rich-menus-from-users

Updates a rich menu alias to point at rich_menu_id. Ref: #update-rich-menu-alias

Validates a rich menu object without creating it. Ref: #validate-rich-menu-object

Validates a batch request without running it. Ref: #validate-batch-control-rich-menus-of-users

Functions

area(bounds, action)

@spec area(map(), map()) :: map()

A tappable area: bounds from bounds/4, action from ExLine.Message.Action.

batch(client, operations, opts \\ [])

@spec batch(ExLine.Client.t(), [map()], keyword()) ::
  {:ok, term()} | {:error, ExLine.Error.t()}

Runs a batch of rich menu operations (link/unlink/setDefault…). Option :resume_request_key to resume a previous request. Ref: #batch-control-rich-menus-of-users

batch_progress(client, request_id)

@spec batch_progress(ExLine.Client.t(), String.t()) ::
  {:ok, map()} | {:error, ExLine.Error.t()}

Gets the progress of a batch request. Ref: #get-batch-control-rich-menus-progress-status

bounds(x, y, width, height)

@spec bounds(integer(), integer(), integer(), integer()) :: map()

Pixel bounds of an area.

cancel_default(client)

@spec cancel_default(ExLine.Client.t()) :: {:ok, term()} | {:error, ExLine.Error.t()}

Clears the default rich menu. Ref: #cancel-default-rich-menu

create(client, rich_menu)

@spec create(ExLine.Client.t(), map()) :: {:ok, map()} | {:error, ExLine.Error.t()}

Creates a rich menu; returns {:ok, %{"richMenuId" => id}}. Ref: #create-rich-menu

create_alias(client, alias_id, rich_menu_id)

@spec create_alias(ExLine.Client.t(), String.t(), String.t()) ::
  {:ok, term()} | {:error, ExLine.Error.t()}

Creates a rich menu alias. Ref: #create-rich-menu-alias

delete(client, rich_menu_id)

@spec delete(ExLine.Client.t(), String.t()) ::
  {:ok, term()} | {:error, ExLine.Error.t()}

Deletes a rich menu. Ref: #delete-rich-menu

delete_alias(client, alias_id)

@spec delete_alias(ExLine.Client.t(), String.t()) ::
  {:ok, term()} | {:error, ExLine.Error.t()}

Deletes a rich menu alias. Ref: #delete-rich-menu-alias

get(client, rich_menu_id)

@spec get(ExLine.Client.t(), String.t()) :: {:ok, map()} | {:error, ExLine.Error.t()}

Gets a rich menu. Ref: #get-rich-menu

get_alias(client, alias_id)

@spec get_alias(ExLine.Client.t(), String.t()) ::
  {:ok, map()} | {:error, ExLine.Error.t()}

Gets a rich menu alias. Ref: #get-rich-menu-alias-by-id

get_default(client)

@spec get_default(ExLine.Client.t()) :: {:ok, map()} | {:error, ExLine.Error.t()}

Gets the default rich menu id. Ref: #get-default-rich-menu-id

get_for_user(client, user_id)

@spec get_for_user(ExLine.Client.t(), String.t()) ::
  {:ok, map()} | {:error, ExLine.Error.t()}

Gets the rich menu id linked to a user. Ref: #get-rich-menu-id-of-user

get_image(client, rich_menu_id)

@spec get_image(ExLine.Client.t(), String.t()) ::
  {:ok, binary()} | {:error, ExLine.Error.t()}

Downloads the rich menu image (raw bytes). Ref: #download-rich-menu-image

link(client, user_id, rich_menu_id)

@spec link(ExLine.Client.t(), String.t(), String.t()) ::
  {:ok, term()} | {:error, ExLine.Error.t()}

Links a rich menu to a user. Ref: #link-rich-menu-to-user

list(client)

@spec list(ExLine.Client.t()) :: {:ok, map()} | {:error, ExLine.Error.t()}

Lists rich menus. Ref: #get-rich-menu-list

list_aliases(client)

@spec list_aliases(ExLine.Client.t()) :: {:ok, map()} | {:error, ExLine.Error.t()}

Lists rich menu aliases. Ref: #get-rich-menu-alias-list

rich_menu(size, areas, opts \\ [])

@spec rich_menu(map(), [map()], keyword()) :: map()

Rich menu object. size is %{width:, height:} (see size/1,2), areas is a list from area/2. Options: :name, :chat_bar_text, :selected.

set_default(client, rich_menu_id)

@spec set_default(ExLine.Client.t(), String.t()) ::
  {:ok, term()} | {:error, ExLine.Error.t()}

Sets the default rich menu for all users. Ref: #set-default-rich-menu

set_image(client, rich_menu_id, image, content_type)

@spec set_image(ExLine.Client.t(), String.t(), binary(), String.t()) ::
  {:ok, term()} | {:error, ExLine.Error.t()}

Uploads the rich menu image (content_type "image/jpeg" or "image/png").

Ref: https://developers.line.biz/en/reference/messaging-api/#upload-rich-menu-image

size(atom)

@spec size(:full | :compact) :: map()

Rich menu size. :full → 2500×1686, :compact → 2500×843.

iex> ExLine.Api.RichMenu.size(:full)
%{width: 2500, height: 1686}

size(width, height)

@spec size(integer(), integer()) :: map()

Custom rich menu size.

unlink(client, user_id)

@spec unlink(ExLine.Client.t(), String.t()) ::
  {:ok, term()} | {:error, ExLine.Error.t()}

Unlinks a user's rich menu. Ref: #unlink-rich-menu-from-user

update_alias(client, alias_id, rich_menu_id)

@spec update_alias(ExLine.Client.t(), String.t(), String.t()) ::
  {:ok, term()} | {:error, ExLine.Error.t()}

Updates a rich menu alias to point at rich_menu_id. Ref: #update-rich-menu-alias

validate(client, rich_menu)

@spec validate(ExLine.Client.t(), map()) :: {:ok, term()} | {:error, ExLine.Error.t()}

Validates a rich menu object without creating it. Ref: #validate-rich-menu-object

validate_batch(client, operations)

@spec validate_batch(ExLine.Client.t(), [map()]) ::
  {:ok, term()} | {:error, ExLine.Error.t()}

Validates a batch request without running it. Ref: #validate-batch-control-rich-menus-of-users