> For the complete documentation index, see [llms.txt](https://help.diarkis.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.diarkis.io/diarkis-modules/notifier/setup-server.md).

# Notifier モジュールをサーバーでセットアップする

## 概要 <a href="#diarkis-room-wosettoappusuru" id="diarkis-room-wosettoappusuru"></a>

Notifier モジュールは、TCP、UDP サーバー上でセットアップをすることが可能です。

Notifier モジュールを利用する際は HTTP 以外すべてのサーバーでセットアップする必要があります。

## セットアップ <a href="#birutoinkomandowokuraiantonisuru" id="birutoinkomandowokuraiantonisuru"></a>

クライアントにビルトイン・コマンドを公開するには、　diarkisexec パッケージを利用してセットアップできます。

以下の様にサーバーの main 関数に追加します。以下は UDP サーバーでセットアップするサンプルです。diarkisexec の setup 関数は `diarkisexec.StartDiarkis()` を呼ぶ前に実行する必要があります。

また、`diarkisexec.SetupNotificationService(name, interval, callback)` にてメッセージを一斉送信する間隔や内容を設定する必要があります。

詳細は [diarkisexec の API リファレンス](https://docs.diarkis.io/docs/server/current/diarkis/diarkisexec/index.html)を参照して下さい。

```go
package main

import "github.com/Diarkis/diarkis/diarkisexec"

func main() {
	logConfigPath := "/configs/shared/log.json"
	meshConfigPath := ""

	diarkisexec.SetupDiarkis(logConfigPath, meshConfigPath, &diarkisexec.Modules{
		Notifier:   &diarkisexec.Options{},
	})
	diarkisexec.SetupNotificationService("Notification", 60, handleNotification)
	diarkisexec.SetupDiarkisUDPServer("/configs/udp/main.json")
	diarkisexec.StartDiarkis()
}

func handleNotification() (*diarkisexec.Notification, error) {
	// Retrieve notification data from a database by the current time
	notificationData := someDatabase.GetNotificationDataByCurrentTime(year, month, date)

	if notificationData == nil {
		// No notification data to send out
		return nil, nil
	}

	n := &diarkisexec.Notification{}
	n.ID = notificationData.ID
	n.Name = notificationData.Name

	// Ver is used by the client to identify the message when received.
	n.Ver = notificationData.Ver

	// Cmd is used by the client to identify the message when received.
	n.Cmd = notificationData.Cmd

	n.Message = []byte("Notification message says 'Hello from the server'")

	// TTL is in seconds to indicate the availability of the notification data.
	// The notification will be available for the not-connected-clients for the duration of TTL and
	// will be sent to the clients when they connect before TTL expires.
	n.TTL = int64(60 * 60) // one hour

	return n, nil
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.diarkis.io/diarkis-modules/notifier/setup-server.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
