Built by

khaaleoo

Category

Notification

Version

0.0.3

Last updated

Jun 13, 2023, 03:07:04 AMa year ago

Medusa Telegram Notification Plugin

The medusa-telegram-notification plugin allows Medusa Server to send push notifications to Telegram. It provides a simple way to integrate Telegram notifications into your Medusa Server application.

Installation

You can install the medusa-telegram-notification plugin using npm, yarn, or pnpm.
npm:
npm install medusa-telegram-notification
yarn:
yarn add medusa-telegram-notification
pnpm:
pnpm install medusa-telegram-notification

Configuration

To use the plugin, you need to add it to your Copy to clipboardmedusa-config.js file.
// medusa-config.js
{
resolve: `medusa-telegram-notification`,
options: {
botToken: process.env.NOTIFICATION_TELEGRAM_BOT_TOKEN,
debug: true || process.env.NODE_ENV === "development",
},
}
Make sure to replace Copy to clipboardprocess.env.NOTIFICATION_TELEGRAM_BOT_TOKEN with the actual bot token for your Telegram bot. You can obtain a bot token by creating a new bot on the Telegram BotFather platform.

Usage

Once you have configured the plugin, you can use the provided sample code as a starting point for sending notifications. Here's an example of how to use the Copy to clipboardMyNotificationService class to handle an order placement event:
// my-notification.ts
import { BaseService } from "medusa-interfaces";
import { toVNCurrencyFormat } from "../utils/currency";
const ADMIN_BASE_URL = process.env.ADMIN_BASE_URL;
const TELEGRAM_GROUP_ID = process.env.TELEGRAM_GROUP_ID;
class MyNotificationService extends BaseService {
telegramNotificationService_;
constructor({ telegramNotificationService }) {
super();
this.telegramNotificationService_ = telegramNotificationService;
}
handleOrderPlaced(order) {
const customerInfo = `${[order.customer.email, order.customer.phone].filter((e) => e).join(" - ")}`;
const message = [
`💌 Order *#${order.display_id}* placed successfully`,
`📝 Order details: [view](${ADMIN_BASE_URL}/a/orders/${order.order_id})`,
`🍭 Customer: ${customerInfo} ([details](${ADMIN_BASE_URL}/a/customers/${order.customer.id}))`,
`💰 Total amount: ${toVNCurrencyFormat(order.reporting_total)}`,
`🚚 Shipping address: ${order.shipping_district}, ${order.shipping_city}`,
].join("\n");
const payload = {
chat_ids: [TELEGRAM_GROUP_ID],
text: message,
parse_mode: "Markdown",
};
this.telegramNotificationService_.sendMessage(payload);
}
}
export default MyNotificationService;
The Copy to clipboardMyNotificationService class extends the Copy to clipboardBaseService provided by Medusa Server. It uses the Copy to clipboardtelegramNotificationService to send a Telegram message with information about the placed order. You can customize the content of the message according to your requirements.
Additionally, you can use the Copy to clipboardtoVNCurrencyFormat function from the Copy to clipboardcurrency.ts file to format the order total in Vietnamese currency (VND).
Feel free to modify and extend the Copy to clipboardMyNotificationService class to handle other events or add more functionality as needed.

Support

If you encounter any issues or have questions regarding the medusa-telegram-notification plugin, please open an issue on the GitHub repository. We'll be happy to assist you.

License

This plugin is licensed under the MIT License.

Build your own plugins

Develop your own plugins with our API to speed up your processes.

Make your plugin available via npm for it to be shared in our Plugin Library with the broader Medusa community.