\u003Cb>نام:\u003C/b> یک نام دلخواه برای کانال ارتباطی که در حال پیکربندی آن هستید انتخاب کنید.\u003C/p>\u003Cp>\u003Cb>URL:\u003C/b> در اسلک مفهومی به نام \u003Ca href=\"https://api.slack.com/messaging/webhooks\">webhook\u003C/a> وجود دارد. برای اینکه URL مناسب برای این قسمت را پیدا کنید مراحل گفته شده در این \u003Ca href=\"https://api.slack.com/messaging/webhooks\">صفحه\u003C/a> را طی کنید. سپس فیلد مرتبط با URL را با URL خود پر کنید.\u003C/p>\u003Cp>در این صفحه میتوانید تنظیمات دیگری را نیز پیکربندی کنید:\u003C/p>\u003Cp>\u003Cb>Mention channel:\u003C/b> با انتخاب این گزینه، وقتی که پیامی روی این کانال منتشر میشود، کل کانال منشن خواهند شد.\u003C/p>\u003Cp>همچنین با استفاده از فیلدهای Groups و Users میتوانید انتخاب کنید که گروهها یا کاربران خاصی را منشن کند.\u003C/p>\u003Cp>\u003Cb>Groups:\u003C/b> برای انتخاب گروههایی که میخواهید منشن شوند، باید ID مرتبط با آن گروهها را در این فیلد وارد کنید. برای دریافت ID گروهها در اسلک به قسمت اطلاعات گروه و سپس about وارد شوید و در آنجا ID مرتبط با آن گروه را مشاهده خواهید کرد.\u003C/p>\u003Cp>\u003Cb>Users:\u003C/b> برای انتخاب کاربرانی که میخواهید منشن شوند، باید ID مرتبط با آن کاربرها را در این فیلد وارد کنید. برای دریافت ID کاربر در اسلک به قسمت View Profile و سپس more وارد شوید و در آنجا ID مرتبط با کاربر را مشاهده خواهید کرد.\u003C/p>\u003Cp>\u003Cb>توجه:\u003C/b> توجه داشته باشید که ID گروهها و همچنین ID کاربران را باید با کاما از یکدیگر جدا شوند.\u003C/p>","7769e9fd-85d8-4e76-ba17-a2c2be163343",{"type":1086,"value":1110,"id":1113},{"heading_text":1111,"size":1095,"link_id":1112},"وبهوک (webhook)","webhook","53caf72f-e981-4606-958b-89b79f76d3eb",{"type":1082,"value":1115,"id":1116},"\u003Cp>برای اینکه از طریق webhook از اتفاقات مرتبط با سرویسها باخبر شوید، از قسمت webhook گزینهی «اضافه کردن/ add new» را انتخاب کنید.\u003C/p>\u003Cp>در صفحهی باز شده فیلدهای مختلفی وجود دارد که در ادامه به توضیح هریک از آنها خواهیم پرداخت:\u003C/p>\u003Cp>\u003Cb>نام:\u003C/b> یک نام دلخواه برای کانال ارتباطی که در حال پیکربندی آن هستید انتخاب کنید.\u003C/p>\u003Cp>\u003Cb>URL:\u003C/b> زمانی که اتفاقی بر روی سرویس رخ دهد، این آدرس، با دادههای مربوط به آن اتفاق، فراخوانی (call) خواهد شد.\u003C/p>\u003Cp>(معمولا برخی از مشتریها برای اینکه همهی اعلانها (alertها) را بر روی یک سیستم داشته باشند، از یک webhook استفاده میکنند که با آن بر روی همهی سرویسها subscribe میکنند. این URL با یک شمای خاصی که در ادامه مشاهده میکنید، فراخوانی میشود.\u003C/p>","93e9bcb4-9a2d-4695-b3a7-b15467acb666",{"type":1086,"value":1118,"id":1121},{"heading_text":1119,"size":1095,"link_id":1120},"شمای ارسال incidentها","incident-schema","a098f6df-a9a4-4590-9689-089bb9882cdb",{"type":1123,"value":1124,"id":1127},"code_block",{"language":1125,"code":1126},"bash","headers = {\r\n \"X-Sotoon-Signature\": \"05ce4d2a2f92b784457011159526374e87b15665c58f18f1f3a25b09e02c9901\",\r\n \"X-Sotoon-Timestamp\": \"1629625906\"\r\n}\r\n\r\nbody = {\r\n \"meta\": {\r\n \"action\": \"created\",\r\n \"type\": \"status.Incident\",\r\n \"name\": \"incident\",\r\n \"timestamp\": 1629625906,\r\n },\r\n \"data\": {\r\n \"created\": \"2021-08-22T14:21:24+04:30\",\r\n \"message\": \"hello world\",\r\n \"services_affected\": [\r\n {\r\n \"name\": \"Service A\",\r\n \"region\": null,\r\n \"status\": \"Service Disruption\"\r\n },\r\n {\r\n \"name\": \"Service B\",\r\n \"region\": {\r\n \"name\": \"Region A\"\r\n },\r\n \"status\": \"Service Outage\"\r\n }\r\n ]\r\n }\r\n}","873152fe-305c-494a-9ff6-369ffdd9504d",{"type":1086,"value":1129,"id":1132},{"heading_text":1130,"size":1095,"link_id":1131},"شمای بهروزرسانی incidentها","update-incident","3c8b2d04-cd33-4ee6-b0d2-0e4cb9cfeacb",{"type":1123,"value":1134,"id":1136},{"language":1125,"code":1135},"headers = {\r\n \"X-Sotoon-Signature\": \"d0a7b73d3f4f76533bd28f9c868eb1d4ce1eb6ebd9bf1a178dffc589b98c0707\",\r\n \"X-Sotoon-Timestamp\": \"1629626097\"\r\n}\r\n\r\nbody = {\r\n \"meta\": {\r\n \"action\": \"created\",\r\n \"type\": \"status.IncidentUpdate\",\r\n \"name\": \"incident update\",\r\n \"timestamp\": 1629626097,\r\n },\r\n \"data\": {\r\n \"created\": \"2021-08-22T14:24:47+04:30\",\r\n \"incident\": {\r\n \"created\": \"2021-08-22T14:21:24+04:30\",\r\n \"message\": \"hello world\",\r\n \"services_affected\": [\r\n {\r\n \"name\": \"Service A\",\r\n \"region\": null,\r\n \"status\": \"Service Disruption\"\r\n },\r\n {\r\n \"name\": \"Service B\",\r\n \"region\": {\r\n \"name\": \"Region A\"\r\n },\r\n \"status\": \"Service Outage\"\r\n }\r\n ]\r\n },\r\n \"message\": \"wow\",\r\n \"services_affected\": [\r\n {\r\n \"name\": \"Service A\",\r\n \"region\": null,\r\n \"status\": \"Available\"\r\n }\r\n ]\r\n }\r\n}","3d915ec5-055d-4d63-8c79-33e0d8084d5a",{"type":1082,"value":1138,"id":1139},"\u003Cp>\u003Cb>توجه:\u003C/b> اگر کاربر مکانیزمی بر روی URL وبهوک خود نداشته باشد ممکن است هرکسی بتواند این URL را فراخوانی کرده و دادههای اشتباهی را برای آنها ارسال کند. ستون برای جلوگیری از این موضوع به فراخوانیهای خود یک امضای دیجیتال اضافه میکند و محتوای پیام را به صورت متقارن رمز میکند و یک کلید در اختیار کاربر قرار میدهد که فقط با آن کلید میتواند پیام مورد نظر را باز کند و اینگونه میتواند مطمئن باشد که پیام از سمت ستون ارسال شده است.\u003C/p>\u003Cp>\u003Cb>توجه:\u003C/b> پس از ساخت کانال، یک کلید در اختیار کاربران قرار خواهد گرفت که میتوانند آن را از طریق پنل کپی و استفاده کنند.\u003C/p>\u003Cp>همانطور که در ادامه مشاهده خواهید کرد، در پایتون بهصورت زیر میتوانید پیام ارسال شده از طرف ستون را رمزگشایی کنید.\u003C/p>\u003Cp>هر درخواست ورودی از ستون شامل دو هدر اضافی X-Sotoon-Signature و X-Sotoon-Timestamp است. شما میتوانید از X-Sotoon_Signature برای تایید پیلود (payload) و از X-Sotoon-Timestamp برای جلوگیری از حملات بازپخش (Replay Attacks) استفاده کنید.\u003C/p>\u003Cp>\u003Cb>secret key کاربر وبهوک:\u003C/b> هر کاربر وبهوک یک secret key منحصزبهفرد دارد. این secret key برای امضای تکتک درخواستهای دریافتی از ستون استفاده میشود. شما برای تایید امضای پیلود درخواست به این امضا نیاز دارید.\u003C/p>\u003Cp>\u003Cb>تایید امضا:\u003C/b> برای تایید پیلود درخواستهای دریافتی، گامهای زیر را دنبال کنید.\u003C/p>\u003Cul>\u003Cli>هدر X-Sotoon-Timestamp و بدنهی درخواست را دریافت کنید، سپس رشتهی پیلود را بسازید.\u003C/li>\u003C/ul>","070e4a8f-6587-4e91-9a0f-e99ce5023b3b",{"type":1123,"value":1141,"id":1143},{"language":1125,"code":1142},"payload = X-Sotoon-Timestamp + \"\\n\" + body","f1f7be09-dc0a-4384-bdc1-966371042875",{"type":1082,"value":1145,"id":1146},"\u003Cul>\u003Cli>هگز HMAC-SHA256 پیلود را با secret key خود محاسبه کنید. در پایتون میتوانید از کتابخانهی HMAC استفاده کنید.\u003C/li>\u003Cli>امضای محاسبهشده را با هدر X-Sotoon-Signature دریافتشده مقایسه کنید.\u003C/li>\u003Cli>شما میتوانید از متدهایی مانند compare_digest برای جلوگیری از حملات زمانبندی استفاده کنید.\u003C/li>\u003C/ul>\u003Cp>\u003Cb>جلوگیری از حملات بازپخش: \u003C/b>تفاوت بین timestamp فعلی و X-Sotoon-Timestamp را محاسبه کنید. سپس تعیین کنید که آیا میزان تفاوت عادی است یا خیر. (تفاوت توصیهشده ۵ دقیقه است.)\u003C/p>","03e512af-25b9-422a-9b7c-692926c91f55",{"type":1123,"value":1148,"id":1151},{"language":1149,"code":1150},"python","import os\r\nimport hmac\r\nimport hashlib\r\n\r\nsecret = os.getenv(\"CHANNEL_SECRET\")\r\nsignature = request_headers[\"X-Sotoon-Signature\"]\r\ntimestmp = request_headers[\"X-Sotoon-Timestamp\"]\r\n\r\nmessage = f\"{timestmp}\\n{request_body}\"\r\n\r\nexpected_signature = hmac.new(\r\n secret.encode(\"utf-8\"), message.encode(\"utf-8\"), hashlib.sha256\r\n).hexdigest()","8d426c24-4ee8-4f52-87d5-56190f99b1de",{"type":1086,"value":1153,"id":1156},{"heading_text":1154,"size":1095,"link_id":1155},"کانال کلیک","cliq","a6f541d9-db77-4c95-a637-3bb3399230f5",{"type":1082,"value":1158,"id":1159},"\u003Cp>برای اینکه از طریق چنل کلیک از اتفاقات مرتبط با سرویسها با خبر شوید، از قسمت Cliq گزینهی «اضافه کردن/ add new» را انتخاب کنید.\u003C/p>\u003Cp>در صفحهی باز شده فیلدهای مختلفی وجود دارد که در ادامه به توضیح هر یک از آنها خواهیم پرداخت:\u003C/p>\u003Cp>\u003Cb>نام:\u003C/b> یک نام دلخواه برای کانال ارتباطی که در حال پیکربندی آن هستید انتخاب کنید.\u003C/p>\u003Cp>\u003Cb>URL:\u003C/b> برای دریافت URL مرتبط با کانالی که میخواهید از آن برای دریافت اخبار اتفاقات باخبر شوید، بر روی پروفایل کانال کلیک کنید و به قسمت Connectors وارد شوید. در این قسمت API Endpoint را مشاهده خواهید کرد که میتوانید از آن بهعنوان URL استفاده کنید.\u003C/p>\u003Cp>\u003Cb>توکن (Token):\u003C/b> برای دریافت توکن، در کلیک، به قسمت پروفایل، سپس bots and tools مراجعه کنید. در صفحهی باز شده قسمت webhook Tokens را انتخاب کنید و بر روی Generate new token کلیک کنید.\u003C/p>","c9c0cb7a-e6c9-4b93-919f-c252f57ce16f",{"type":1086,"value":1161,"id":1164},{"heading_text":1162,"size":1089,"link_id":1163},"گام دوم","second-step","943708bf-ab8d-4029-9a81-28c39b22af43",{"type":1086,"value":1166,"id":1168},{"heading_text":1167,"size":1095,"link_id":804},"اشتراک وضعیت (از اتفاقات مرتبط با کدام سرویسها میخواهید باخبر شوید.)","e4a1fa72-5271-4d35-ac1d-ca3bbd055c6d",{"type":1082,"value":1170,"id":1171},"\u003Cp>پس از اینکه کانالهای ارتباطی مد نظر خود را از قسمت کانالهای ارتباطی/ Notification channels پیکربندی کردید. وارد قسمت اشتراک وضعیت/ status subscriptions شوید. در این قسمت میتوانید انتخاب کنید که بر روی چه کانالی از اتفاقات مرتبط با چه سرویسهایی باخبر شوید.\u003C/p>\u003Cp>برای این کار گزینهی اشتراک جدید/ New subscription را انتخاب کنید. در صفحهی باز شده فیلدهایی وجود دارد که در ادامه به توضیح هریک از آنها خواهیم پرداخت.\u003C/p>\u003Cp>\u003Cb>نام:\u003C/b> یک نام دلخواه برای اشتراکی که در حال پیکربندی آن هستید انتخاب کنید.\u003C/p>\u003Cp>\u003Cb>کانال:\u003C/b> در این قسمت میتوانید لیست کانالهای ارتباطی که قبلا پیکربندی کردهاید را مشاهد کنید و یکی از آنها را به دلخواه انتخاب کنید.\u003C/p>\u003Cp>\u003Cb>سرویسها:\u003C/b> در این قسمت میتوانید از لیستی که به شما ارائه میشود سرویسهایی را که میخواهید از وضعیت آنها با خبر شوید را انتخاب کنید.\u003C/p>\u003Cp>\u003Cb>active:\u003C/b> با انتخاب این گزینه اشتراک خود را فعال میکنید، همچنین میتوانید هر زمان که خواستید به جای اینکه آن را حذف کنید از قسمت «ویرایش» این اشتراک را با برداشتن تیک active غیرفعال کنید.\u003C/p>\u003Cp>\u003Cb>توجه:\u003C/b> امکان حذف یا ویرایش هر اشتراکی که ساختهاید در پنل موجود است.\u003C/p>","9a7c98d4-42f5-41b1-9041-90ef534d0af8",[],{"slug":123,"title":124},["Reactive",1175],{"$snuxt-i18n-meta":1176,"$sroute-nav-config":1177,"$ssite-config":1181},{},["ShallowRef",1178],{"variant":1179,"position":1180,"container":97},"light","static",{"currentLocale":1182,"description":1183,"env":1184,"name":1185,"url":1186},"fa","Managing Sotoon products showcase","production","sotoon","https://sotoon.ir",["Set"],["ShallowReactive",1189],{"products":-1,"documents:products":-1,"$APL8jXlmTi":-1},"/docs/support/support/how-to-guides/status-subscription"]