Tabla de contenido
1 Antecedentes de la introducción
Mayor comodidad y satisfacción del cliente
Notificaciones importantes como Woocommerce ‘Nueva Compra’, ‘Proceso Completado’ y ‘Cancelado’ pueden ser enviadas a Line.
Así se evitan problemas como que las notificaciones no se envíen a las direcciones de correo electrónico o queden enterradas en los buzones y se pierdan, lo que redunda en una mayor satisfacción del cliente.
Mayor reconocimiento y fidelidad al servicio
Se espera que este servicio aumente el reconocimiento de la cuenta oficial de LINE y mejore la fidelidad al añadir amigos a la cuenta oficial de LINE y enviar mensajes de gran importancia.
Como el emparejamiento se basa en los números de teléfono y puede entregarse a los usuarios antes de añadir amigos, también puede utilizarse para crear una oportunidad de añadir amigos.
2 Condiciones de uso de los mensajes de notificación LINE
Creación de una cuenta oficial de Line (@line)
El nuevo servicio de soporte comercial de Line, Cuenta Oficial LINE, te permite enviar información directamente a los usuarios que te hayan añadido como amigo a través de LINE. Es un servicio generoso que permite comunicarse con los usuarios sin obtener sus datos personales.
Para más información sobre cómo configurar este servicio, consulte el sitio web oficial de Line.
Empezar a utilizar la API de mensajería
Después de abrir una ‘Cuenta Oficial Line ‘, puedes chatear con los usuarios a través de Line como de costumbre después de configurar el modo de chat, pero con el fin de implementar las notificaciones automáticas después de recibir un pedido de Woocommerce, debes configurar la API de mensajería.
Empezar a utilizar la API de mensajería y obtener un token de acceso al canal no son los puntos principales de esta explicación, así que consulta el sitio web oficial de Line para obtener información más detallada.
3 Condiciones para activar las notificaciones de línea
Plugin esencial para WordPress.
Con una cuota del 20% de los sitios de comercio electrónico en todo el mundo, Woocommerce se ha convertido en una parte indispensable del mercado del comercio electrónico.
Necesitarás el SDK de LINE Messaging API, que incorpora la API de mensajería, pero aquí se recomienda Line Connect.
Utilice la acción hook (woocommerce_email_sent) para realizar una notificación por correo electrónico cada vez que cambie el estado de un pedido, desde nuevo a completado e incluso pedidos cancelados en Woocommerce, y llame a la API de mensajería de línea.
Emitir una notificación de recepción electrónica en una acción del lado del cliente (usuario)
Notificación de e-recibos en acciones desde el lado del administrador
Ejecución de la acción gancho
Utiliza aquí Line Connect, que dispone del SKD de la API de mensajería necesario para enviar a Line. Este plugin tiene excelentes características como las notificaciones a Line cuando se publica y la integración de Line en modo bot. Le animamos a utilizarlo.
add_action('woocommerce_email_sent', 'kure_customize_woocommerce_email_sent', 10, 3);
function kure_customize_woocommerce_email_sent($return, $id, $mailer)
{
// Line Connect & Easy Line login(KURE製) が必須
if (!class_exists('lineconnectMessage') || !function_exists('Esay_line_login')) {
return;
}
$line_messager_class_path = KURE_DIR_CLASS . "kure_customize_line_receipt.php";
if (!file_exists($line_messager_class_path)) {
return;
}
if (!did_action('woocommerce_email_order_details')) {
return;
}
try {
if (!isset($mailer->object) || !($mailer->object instanceof WC_Order)) {
return;
}
$order = $mailer->object;
// 注文のユーザーからLine Idを取得
if (!Esay_line_login()->has_line($order->get_user(), $line_id)) {
return;
}
static $is_sent;
if (isset($is_sent[$line_id]) && $is_sent[$line_id] == $order->get_order_number()) {
// 連続送信しない
return;
}
// メールの送信先が違い、同じオーダーで2回送信されることがある為、重複Line通知を回避
$is_sent[$line_id] = $order->get_order_number();
/** @var kure_customize_line_receipt */
$line_messager = include $line_messager_class_path;
foreach (lineconnect::get_all_channels() as $channel) {
// send_order_roleはKUREがカスタマイズした設定項目
if (empty($channel['send_order_role']) || !in_array($channel['send_order_role'], $line_role_names)) {
// 指定された通知対象か
continue;
}
$error = lineconnectMessage::sendPushMessage($channel, $line_id, $line_messager);
// 一方通行の為、ブロック中のユーザかどうか分からないです。その時、Webhookの配信完了イベントにて送信結果を拾う必要があるが、チャットモードの場合、Webhookが利用できない
// https://developers.line.biz/ja/docs/partner-docs/line-notification-messages/message-sending-complete-webhook-event/#overview-delivery-webhook-event
if ($error["success"]) {
// 一度成功したら、複数回の通知を実施しないよう、中断
break;
}
}
} catch (Throwable $th) {
//すべての例外を無視
}
}
4 Flex Message JSON para enviar a la API de mensajería
Las plantillas de mensajes que pueden enviarse a la API de mensajería se denominan mensajes Flex. Puede diseñarlo libremente siempre que utilice el diseño JSON especificado.
Existen varias herramientas que proporcionan diseños de Flex Message, pero como nosotros NO cobramos, nos basamos en el manual de Line para crear el nuestro.
En primer lugar, busque una plantilla similar a un recibo en el simulador de mensajes Flex de Line Developers y organice el JSON.
Aquí está el JSON después del arreglo.
BODY después del arreglo JSON
"type": "bubble",
"body": {
"type": "box",
"layout": "vertical",
"contents": [
{
"type": "box",
"layout": "horizontal",
"contents": [
{
"type": "image",
"url": "{site_logo}",
"align": "start"
},
{
"type": "text",
"text": "{order_status}",
"weight": "bold",
"color": "#1DB446",
"size": "sm",
"align": "end",
"gravity": "center"
}
]
},
{
"type": "text",
"text": "{order_title}",
"weight": "bold",
"size": "xxl",
"margin": "md",
"decoration": "underline",
"action": {
"type": "uri",
"label": "action",
"uri": "{order_link}"
}
},
{
"type": "text",
"text": "{order_address}",
"size": "xs",
"color": "#aaaaaa",
"wrap": true
},
{
"type": "separator",
"margin": "xxl"
},
{
"type": "box",
"layout": "vertical",
"margin": "xxl",
"spacing": "sm",
"contents": [
{order_items},
{
"type": "separator",
"margin": "xxl"
},
{order_total}
]
},
{
"type": "separator",
"margin": "xxl"
},
{
"type": "box",
"layout": "horizontal",
"margin": "md",
"contents": [
{
"type": "text",
"text": "{order_note}",
"size": "xs",
"color": "#aaaaaa",
"wrap": true
}
]
}
]
},
"styles": {
"footer": {
"separator": true
}
}
*»{order_NNN}»: indica la palabra clave para str_replace.
Elementos detallados (con URL) JSON
"type": "box",
"layout": "horizontal",
"contents": [
{
"type": "text",
"text": "{item_title}",
"size": "sm",
"color": "#555555",
"flex": 0,
"action": {
"type": "uri",
"label": "action",
"uri": "{item_link}"
}
},
{
"type": "text",
"text": "{item_value}",
"size": "sm",
"color": "#111111",
"align": "end"
}
]
Detalle Artículos JSON
"type": "box",
"layout": "horizontal",
"contents": [
{
"type": "text",
"text": "{item_title}",
"size": "sm",
"color": "#555555",
"flex": 0
},
{
"type": "text",
"text": "{item_value}",
"size": "sm",
"color": "#111111",
"align": "end"
}
]
Punto de arreglo
- Mostrar icono del sitio
- Mostrar el estado del pedido
- El número de pedido se muestra en la cabecera y se incrusta la URL para redirigir al historial de pedidos correspondiente.
- También se generan automáticamente los detalles del pedido (lista de productos) y se incrusta la URL para redirigir al producto correspondiente.
- Muestra el precio total, los gastos de envío y la forma de pago, así como el campo de pie de página del historial de pedidos de woocommerce.
- También muestra las observaciones (Nota de pedido) añadidas por el administrador.
Estos son algunos de los códigos fuente.
Salida de los detalles del producto del pedido
Generar una cadena y sustituirla por «{order_items}» en el BODYJSON.
// 注文商品を出力
foreach ($this->order->get_items() as $item_id => $item) {
if ($item instanceof WC_Order_Item_Product) {
$product = $item->get_product();
$json_items[] = $this->create_items_with_link(
$product->get_name(), // {item_title} 商品名
$product->get_permalink(), // {item_link} 商品へのリダイレクトする為、リンクを埋め込む
$this->order->get_formatted_line_subtotal($item) // {item_value} 値段
);
} else {
// 基本的にProduct以外のItemがないですが、Product Addons & Optionsなどプラグインを導入している場合、該当分岐に入る
$json_items[] = $this->create_items_no_link(
$item->get_name(),
$this->order->get_formatted_line_subtotal($item)
);
}
}
Salida del importe total
Generar una cadena y reemplazar con «{order_total}» en BODYJSON.
$faqurl = $this->get_order_payment_faqurl(); // 決済方法の案内(よくある質問)ページ
// 金額、送料など出力
foreach ($this->order->get_order_item_totals() as $item_id => $item) {
if ($item_id === 'payment_method' && !empty($faqurl)) {
$json_total[] = $this->create_items_with_link(
$item['label'],
$faqurl, // 決済方法へのリダイレクトを埋め込む
$item['value'],
);
} else {
$json_total[] = $this->create_items_no_link(
$item['label'],
$item['value']
);
}
}
Salida de notas (notas de pedido)
Las notas (notas de pedido) se pueden añadir en la pantalla de administración de la edición de pedidos de woocommerce. Hay dos tipos de notas: notas para el administrador y notas para notificar a los clientes. Las notificaciones a los clientes también se envían a un recibo electrónico.
Como los elementos se introducen manualmente, puede introducir libremente símbolos y otra información. Si se incluyen comillas dobles o símbolos especiales, la cadena JSON generará un error. Por lo tanto, se eliminan de antemano para evitar errores JSON.
private function get_order_notes()
{
$notes = array();
foreach ($this->order->get_customer_order_notes() as $ext_note) {
if ($ext_note instanceof WP_Comment) {
// 日付 + 内容、wptexturizeにて特殊記号を有効な文字へ変換
$notes[] = date_i18n(get_option('date_format'), strtotime($ext_note->comment_date)) . ' ' . wptexturize($ext_note->comment_content);
}
}
$notes = array_filter(array_map('trim', $notes));
$str_notes = $this->del_specialchars(implode('n', $notes));
if (empty($str_notes)) {
// 空欄だと、Line側でエラーが発生する為、ノートがない場合も内容を設定
$str_notes = '注文メモなし';
}
return $str_notes;
}
private function del_specialchars($text)
{
$text = html_entity_decode(wp_strip_all_tags($text));
// json の 変換でエラーにならないよう、ダブルコーテーションをなくす
$text = str_replace(
['"', "'"],
' ',
$text
);
return $text;
}
5 Conclusión.
Sólo en Japón, Line cuenta con 93 millones de usuarios. Numerosas empresas y organismos públicos también utilizan Line para difundir información a sus usuarios. El mundo es demasiado grande para ignorar a Line. Por supuesto, lo mismo ocurre con el autor.
El autor ha dedicado muchos años al desarrollo de Krasaba. Gracias a Corona, pasa más tiempo en casa y se ha interesado por Line + WordPress desde 2022 y sigue aceptando el reto. Todavía soy un novato, pero me alegraría poder ser de ayuda al mayor número posible de personas/desarrolladores, aunque sólo fuera en pequeña medida. Seguiré desafiándome a mí mismo en el futuro, así que, por favor, espérenlo.
Y, por favor, conéctese y deje un comentario si tiene alguna pregunta o sugerencia.