Integrasi Spiceworks Slack - Bagaimana-Untuk

Integrasi Spiceworks Slack

Inilah cara saya mengirim Spiceworks ke saluran Slack tim saya menggunakan powershell. Semua ini dilakukan pada server Spiceworks khusus kami. Jika Anda ingin mengubah langkah-langkah untuk berjalan di server lain, jadilah tamu saya. Ini hanya berfungsi jika Anda meng-host instalasi Spiceworks Anda sendiri.

Total 4 langkah

Langkah 1: Atur PSQLite

Unduh dan instal PSQLite di server Anda untuk dapat mengakses DB SQLite yang digunakan Spiceworks. PSQLite dapat ditemukan di https://psqlite.codeplex.com/

Langkah 2: Dapatkan webhook Slack untuk saluran Anda

Anda harus menyiapkan webhook yang masuk di Slack untuk memanfaatkan posting Anda. Ada petunjuk bagus di situs ini untuk mengaturnya di bagian berjudul, "Penyiapan Integrasi Webhook Masuk".
http://www.programmableweb.com/news/how-to-integrate-webhooks-slack-api/how-to/2015/10/10

Langkah 3: Buat skrip

Saya menggabungkan semua langkah skrip saya ke dalam skrip Powershell (dapat diunduh di https://community.spiceworks.com/scripts/show/3645-spiceworks-slack-script). Jangan ragu untuk memecahnya jika Anda mau. Inilah yang saya hasilkan (disanitasi). Ia memeriksa untuk dibuka dan ditutup dalam 15 menit terakhir (seperti yang ditunjukkan dalam tajuk komentar skrip). Anda harus memperbarui variabel di bagian atas dengan informasi webhook Slack yang Anda buat di langkah 2 (di mana dikatakan dan).

Jika Anda ingin tahu apa yang sebenarnya dilakukannya, tanpa membaca semuanya, saya telah mengatur skrip untuk menyalin file database Spiceworks dari lokasi default mereka ke database laporan, yang saya taruh di folder yang sama dengan database produksi. Saya kemudian menggunakan PSQLite untuk me-mount database laporan sebagai drive 'q' dan meminta informasi tiket yang kemudian disalurkan ke webhook Slack yang diatur pada langkah 2.

# Variabel Slack
$ SlackWebHook =
$ slackChannel =
$ slackIcon = 'http://www.spiceworks.com/images/icons/swoosh.png'

# Lokasi DB Spiceworks
$ production_db = 'c: Program Files (x86) Spiceworks db spiceworks_prod.db'
$ production_wal = 'c: Program Files (x86) Spiceworks db spiceworks_prod.db-wal'
$ production_shm = 'c: Program Files (x86) Spiceworks db spiceworks_prod.db-shm'
$ spiceworks_rpt_db = 'c: Program Files (x86) Spiceworks db spiceworks_rpt.db'
$ spiceworks_rpt_wal = 'c: Program Files (x86) Spiceworks db spiceworks_rpt.db-wal'
$ spiceworks_rpt_shm = 'c: Program Files (x86) Spiceworks db spiceworks_rpt.db-shm'

fungsi post-Slack
{
param (
[string] $ SlackWebHook,
[string] $ SlackChannel,
[string] $ pengirim,
[string] $ icon,
[string] $ message
)

$ Time = Get-Date -Format g

$ postSlackMessage = @ {
channel = $ SlackChannel;
unfurl_links = "true";
username = $ sender;
icon_url = $ icon;
text = "$ ($ Time)
`` `` `` $ ($ message) `` `` `` ";
} | ConvertTo-Json

Invoke-RestMethod -Method Post -ContentType 'application / json' -Uri $ SlackWebHook -Body $ postSlackMessage | Out-Null

}

# bersihkan dari jalankan terakhir
if ((test-path -path $ spiceworks_rpt_db) -eq $ true) {
Hapus-Item $ spiceworks_rpt_db-memaksa
}
if ((test-path -path $ spiceworks_rpt_wal) -eq $ true) {
Remove-Item $ spiceworks_rpt_wal-force
}
if ((test-path -path $ spiceworks_rpt_shm) -eq $ true) {
Hapus-Item $ spiceworks_rpt_shm-memaksa
}

# salin DB produksi ke laporan DB
Salin-Item $ production_db $ spiceworks_rpt_db | Out-Null
Salin-Item $ production_wal $ spiceworks_rpt_wal | Out-Null
Salin-Item $ production_shm $ spiceworks_rpt_shm | Out-Null

# beri waktu salinan-item untuk selesai
Mulai-Tidur -s 15

# dapatkan alat untuk berinteraksi dengan DB
impor-modul SQLite

# memetakan DB
new-psdrive -name "q" -psprovider "SQLite" -root "Sumber Data = $ spiceworks_rpt_db" | keluar-nol

# permintaan untuk membuat tiket dibuat dan ditutup dalam 15 menit terakhir
$ new_closed_tickets_query = invoke-item q: -sql "SELECT t.id, u.first_name, u.last_name DARI tiket t LEFT BERGABUNG pengguna u ON t.assigned_to = u.id WHERE t.status = 'ditutup' DAN t.created_at > Datetime ('sekarang', '-15 menit', 'localtime') DAN t.closed_at <DATETIME (t.created_at, '15 menit ') "

# jalankan query
$ new_closed_tickets = $ new_closed_tickets_query | Select-Object -Property id, first_name, last_name

# Lakukan sesuatu dengan setiap tiket
foreach ($ tiket dalam $ new_closed_tickets) {

$ ticket_id = $ ticket.id
$ ticket_first_name = $ ticket.first_name
$ ticket_last_name = $ ticket.last_name

$ ticket_message = "$ ticket_id telah dibuat dan ditutup. Tech adalah $ ticket_first_name $ ticket_last_name."
post-Slack -SlackWebHook $ slackWebHook -SlackChannel $ slackChannel -Kirim 'Spiceworks' -Icon $ slackIcon -Pesan $ ticket_message
tulis-host $ ticket_message
}

# Tiket terbuka baru
$ new_closed_tickets_query = invoke-item q: -sql "SELECT t.id, u.first_name, u.last_name DARI tiket t LEFT BERGABUNG pengguna u ON t.assigned_to = u.id WHERE t.status = 'buka' DAN t.created_at > Datetime ('sekarang', '-15 menit', 'waktu lokal') "

# jalankan query
$ new_closed_tickets = $ new_closed_tickets_query | Select-Object -Property id, first_name, last_name

# Lakukan sesuatu dengan setiap tiket
foreach ($ tiket dalam $ new_closed_tickets) {

$ ticket_id = $ ticket.id
$ ticket_first_name = $ ticket.first_name
$ ticket_last_name = $ ticket.last_name

$ ticket_message = "$ ticket_id dibuka. Ditugaskan ke $ ticket_first_name $ ticket_last_name"
post-Slack -SlackWebHook $ slackWebHook -SlackChannel $ slackChannel -Kirim 'Spiceworks' -Icon $ slackIcon -Pesan $ ticket_message
}

# Tiket lama yang ditutup
$ new_closed_tickets_query = invoke-item q: -sql "SELECT t.id, u.first_name, u.last_name DARI tiket t LEFT BERGABUNG pengguna u ON t.assigned_to = u.id WHERE t.status = 'ditutup' DAN t.created_at <Datetime ('now', '-15 menit', 'localtime') DAN t.closed_at> DATETIME ('now', '- 15 menit', 'localtime') "

# jalankan query
$ new_closed_tickets = $ new_closed_tickets_query | Select-Object -Property id, first_name, last_name

# Lakukan sesuatu dengan setiap tiket
foreach ($ tiket dalam $ new_closed_tickets) {

$ ticket_id = $ ticket.id
$ ticket_first_name = $ ticket.first_name
$ ticket_last_name = $ ticket.last_name

$ ticket_message = "$ ticket_id telah ditutup. Tech adalah $ ticket_first_name $ ticket_last_name."
post-Slack -SlackWebHook $ slackWebHook -SlackChannel $ slackChannel -Kirim 'Spiceworks' -Icon $ slackIcon -Pesan $ ticket_message
}

# membersihkan
Hapus-PSDrive -name "q"

Langkah 4: Jadwalkan skrip untuk dijalankan

Ketika saya mengatur ini, itu adalah untuk memeriksa Spiceworks DB kami setiap 15 menit, jadi saya mengatur penjadwal tugas untuk menjalankan skrip PowerShell setiap 15 menit. Sesuaikan waktu dengan apa pun yang Anda butuhkan, tetapi pastikan Anda memperbarui skrip ke akun untuk interval yang berbeda.

Ini adalah pekerjaan yang cepat dan kotor, tetapi seharusnya memberi Anda titik awal untuk menulis pertanyaan tambahan dari instalasi Spiceworks Anda dan membuatnya diposting ke saluran Slack Anda untuk keuntungan tim Anda.