Built by

khaaleoo

Category

Notification

Version

0.0.3

Last updated

Jun 13, 2023, 03:07:04 AM10 months 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 clipboard
medusa-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 clipboard
process.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 clipboard
MyNotificationService
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 clipboard
MyNotificationService
class extends the
Copy to clipboard
BaseService
provided by Medusa Server. It uses the
Copy to clipboard
telegramNotificationService
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 clipboard
toVNCurrencyFormat
function from the
Copy to clipboard
currency.ts
file to format the order total in Vietnamese currency (VND).
Feel free to modify and extend the
Copy to clipboard
MyNotificationService
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.