WebHook

การเรียกกลับสถานะอีเมล

URL

อินพุตที่ผู้ใช้กำหนดบนหน้าเว็บ
              
              อินพุตที่ผู้ใช้กำหนดบนหน้าเว็บ

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

Content-Type:

application/json; charset=utf-8
              
              application/json; charset=utf-8

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

วิธีการร้องขอ HTTP

post
              
              post

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ส่วนหัวของคำขอ

ส่วนหัว ประเภท จำเป็น คำอธิบาย
X-WebHook-Timestamp String true ตราประทับเวลา
X-WebHook-AppKey String true ค่าคงที่: "email"
X-WebHook-Signature String true ลายเซ็นดิจิทัล

เนื้อหาคำขอ

พารามิเตอร์ ประเภท คำอธิบาย
message_id string รหัสข้อความ
to string ผู้รับ (ว่างในข้อความเป้าหมาย)
server string email
itime long ตราประทับเวลาการสร้างข้อความ
custom_args json ฟิลด์ที่กำหนดเองโดยผู้ใช้
status json การเรียกกลับสถานะข้อความ

หมายเหตุ:
อัลกอริธึมลายเซ็น: ใช้คีย์แอปของผู้ใช้เป็นคีย์การเข้ารหัสเพื่อดำเนินการ HmacSHA256 บนตราประทับเวลา itime เพื่อให้ได้สตริงเลขฐานสิบหก

ข้อความสถานะเป้าหมายอีเมล

เงื่อนไขการกระตุ้น: คำขออีเมลสำเร็จ

status

พารามิเตอร์ ประเภท คำอธิบาย
message_status string target
status_data json object ข้อมูลสถานะ
message string คำขอสำเร็จ
task_id int รหัสงาน
api_user string ผู้ใช้ API
tos array อาร์เรย์ผู้รับ
email_ids array อาร์เรย์รหัสอีเมลผู้รับ
label_id int รหัสป้ายกำกับ
{ "server": "email", "message_id": "1676615711309_104117_18546_8821.sc-10_43_7_16-inbound", "itime": 1676615711325, "status": { "message_status": "target", "status_data": { "email_ids": [ "1676615711309_104117_18546_8821.sc-10_43_7_16-inbound0$12345@hotmail.com" ], "tos": [ "12345@hotmail.com" ], "task_id": "-1", "api_user": "scgp_email_system_trigger", "message": "successfully request", "label_id": 0 } }, "custom_args": {} }
              
              {
    "server": "email", 
    "message_id": "1676615711309_104117_18546_8821.sc-10_43_7_16-inbound", 
    "itime": 1676615711325, 
    "status": {
        "message_status": "target", 
        "status_data": {
            "email_ids": [
                "1676615711309_104117_18546_8821.sc-10_43_7_16-inbound0$12345@hotmail.com"
            ], 
            "tos": [
                "12345@hotmail.com"
            ], 
            "task_id": "-1", 
            "api_user": "scgp_email_system_trigger", 
            "message": "successfully request", 
            "label_id": 0
        }
    },
    "custom_args": {}
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

メール送信ステータスメッセージ

トリガータイミング: EngageLabからメールが正常に送信されました

ステータス

パラメーター タイプ 説明
message_status string 送信済み
status_data json object ステータスデータ
message string 正常に送信されました
task_id int タスクID
api_user string APIユーザー
email_id string メールID
label_id int ラベルID
{ "server": "email", "message_id": "1676615711309_104117_18546_8821.sc-10_43_7_16-inbound0$12345@hotmail.com", "to": "12345@hotmail.com", "itime": 1676615714397, "status": { "message_status": "sent", "status_data": { "email_id": "1676615711309_104117_18546_8821.sc-10_43_7_16-inbound0$12345@hotmail.com", "task_id": "-1", "api_user": "scgp_email_system_trigger", "message": "successfully sent", "label_id": 0 } }, "custom_args": {} }
              
              {
    "server": "email", 
    "message_id": "1676615711309_104117_18546_8821.sc-10_43_7_16-inbound0$12345@hotmail.com", 
    "to": "12345@hotmail.com", 
    "itime": 1676615714397, 
    "status": {
        "message_status": "sent", 
        "status_data": {
            "email_id": "1676615711309_104117_18546_8821.sc-10_43_7_16-inbound0$12345@hotmail.com", 
            "task_id": "-1", 
            "api_user": "scgp_email_system_trigger", 
            "message": "successfully sent", 
            "label_id": 0
        }
    },
    "custom_args": {}
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ข้อความสถานะการส่งอีเมล

เวลาที่ทริกเกอร์: อีเมลส่งสำเร็จ

สถานะ

พารามิเตอร์ ประเภท คำอธิบาย
message_status string ส่งสำเร็จ
status_data json object ข้อมูลสถานะ
message string ส่งสำเร็จเรียบร้อย
task_id int รหัสงาน
api_user string ผู้ใช้ API
email_id string รหัสอีเมล
label_id int รหัสป้ายกำกับ
{ "server": "email", "message_id": "1675758375681_15_6393_8309.sc-10_2_226_96-test0$12345@gmail.com", "to": "12345@gmail.com", "itime": 1675758376586, "status": { "message_status": "delivered", "status_data": { "email_id": "1675758375681_15_6393_8309.sc-10_2_226_96-test0$12345@gmail.com", "task_id": "-1", "api_user": "1224_xjm", "message": "successfully delivered", "label_id": 0 } }, "custom_args": {} }
              
              {
    "server": "email", 
    "message_id": "1675758375681_15_6393_8309.sc-10_2_226_96-test0$12345@gmail.com", 
    "to": "12345@gmail.com", 
    "itime": 1675758376586, 
    "status": {
        "message_status": "delivered", 
        "status_data": {
            "email_id": "1675758375681_15_6393_8309.sc-10_2_226_96-test0$12345@gmail.com", 
            "task_id": "-1", 
            "api_user": "1224_xjm", 
            "message": "successfully delivered", 
            "label_id": 0
        }
    },
    "custom_args": {}
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

สถานะข้อความ Email invalid_email

เวลาเกิดทริกเกอร์: การส่งอีเมลล้มเหลว

สถานะ

พารามิเตอร์ ประเภท คำอธิบาย
message_status string invalid_email
status_data json object ข้อมูลสถานะ
task_id int รหัสงาน
api_user string ผู้ใช้ API
email_id string รหัสอีเมล
label_id int รหัสป้ายกำกับ
error_code int รหัสข้อผิดพลาด
error_detail json รายละเอียดข้อผิดพลาด
message string บันทึกการส่งอีเมลกลับ
sub_stat int หมวดย่อยของข้อผิดพลาด, 4xx หมายถึงหมวดหมู่หลักคืออีเมลไม่ถูกต้อง
sub_stat_desc string การจัดประเภทข้อผิดพลาด
{ "server": "email", "message_id": "1676537131885_95_4921_8644.sc-10_2_226_96-test0$12345@gmail.com", "to": "12345@gmail.com", "itime": 1676537132783, "status": { "message_status": "invalid_email", "error_code": 409, "error_detail": { "sub_stat": 409, "message": "Domain may not exist or DNS check failed [MF99jssew+U8hyLhCJdZwkffXOKzGzvvQq5UZaSZR1BIotz1+sUrL6gFET3lJu6KdQ== IP: 8.219.236.47].", "sub_stat_desc": "Other" }, "status_data": { "email_id": "1676537131885_95_4921_8644.sc-10_2_226_96-test0$12345@gmail.com", "task_id": "-1", "api_user": "postmaster@sendcloud.io", "label_id": 0 } }, "custom_args": {} }
              
              {
    "server": "email", 
    "message_id": "1676537131885_95_4921_8644.sc-10_2_226_96-test0$12345@gmail.com", 
    "to": "12345@gmail.com", 
    "itime": 1676537132783, 
    "status": {
        "message_status": "invalid_email", 
        "error_code": 409, 
        "error_detail": {
            "sub_stat": 409, 
            "message": "Domain may not exist or DNS check failed [MF99jssew+U8hyLhCJdZwkffXOKzGzvvQq5UZaSZR1BIotz1+sUrL6gFET3lJu6KdQ== IP: 8.219.236.47].", 
            "sub_stat_desc": "Other"
        }, 
        "status_data": {
            "email_id": "1676537131885_95_4921_8644.sc-10_2_226_96-test0$12345@gmail.com", 
            "task_id": "-1", 
            "api_user": "postmaster@sendcloud.io", 
            "label_id": 0
        }
    },
    "custom_args": {}
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ข้อความสถานะ Email soft_bounce

เวลาในการกระตุ้น: หลังจากที่อีเมลถูกส่งสำเร็จแล้ว จะเกิด soft bounce

สถานะ

พารามิเตอร์ ประเภท คำอธิบาย
message_status string soft_bounce
status_data json object ข้อมูลสถานะ
task_id int รหัสงาน
api_user string ผู้ใช้ API
email_id string รหัสอีเมล
label_id int รหัสป้ายกำกับ
error_code int รหัสข้อผิดพลาด
error_detail json รายละเอียดข้อผิดพลาด
message string บันทึกการส่งคืนอีเมล
sub_stat int หมวดย่อยของข้อผิดพลาด, 5xx หมายถึงหมวดหมู่หลักคือ soft bounce
sub_stat_desc string การจัดประเภทข้อผิดพลาด
{ "server": "email", "message_id": "1676537131885_95_4921_8644.sc-10_2_226_96-test0$12345@gmail.com", "to": "12345@gmail.com", "itime": 1676537132783, "status": { "message_status": "soft_bounce", "error_code": 509, "error_detail": { "sub_stat": 509, "message": "Domain may not exist or DNS check failed [MF99jssew+U8hyLhCJdZwkffXOKzGzvvQq5UZaSZR1BIotz1+sUrL6gFET3lJu6KdQ== IP: 8.219.236.47].", "sub_stat_desc": "Other" }, "status_data": { "email_id": "1676537131885_95_4921_8644.sc-10_2_226_96-test0$12345@gmail.com", "task_id": "-1", "api_user": "postmaster@sendcloud.io", "label_id": 0 } }, "custom_args": {} }
              
              {
    "server": "email", 
    "message_id": "1676537131885_95_4921_8644.sc-10_2_226_96-test0$12345@gmail.com", 
    "to": "12345@gmail.com", 
    "itime": 1676537132783, 
    "status": {
        "message_status": "soft_bounce", 
        "error_code": 509, 
        "error_detail": {
            "sub_stat": 509, 
            "message": "Domain may not exist or DNS check failed [MF99jssew+U8hyLhCJdZwkffXOKzGzvvQq5UZaSZR1BIotz1+sUrL6gFET3lJu6KdQ== IP: 8.219.236.47].", 
            "sub_stat_desc": "Other"
        }, 
        "status_data": {
            "email_id": "1676537131885_95_4921_8644.sc-10_2_226_96-test0$12345@gmail.com", 
            "task_id": "-1", 
            "api_user": "postmaster@sendcloud.io", 
            "label_id": 0
        }
    },
    "custom_args": {}
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การเรียกกลับการตอบกลับทางอีเมล

URL

การปรับแต่งของผู้ใช้
              
              การปรับแต่งของผู้ใช้

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

Content-Type:

application/json; charset=utf-8
              
              application/json; charset=utf-8

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

วิธีการร้องขอ HTTP

post
              
              post

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

Request Headers

Header Type Required Description
X-WebHook-Timestamp String true เวลาประทับ
X-WebHook-AppKey String true ค่าคงที่: "email"
X-WebHook-Signature String true ลายเซ็นดิจิทัล

Request Body

Parameter Type Description
message_id string รหัสข้อความ
to string ผู้รับ
server string email
itime long เวลาประทับการสร้างข้อความ
custom_args json ฟิลด์ที่กำหนดเองโดยผู้ใช้
response json การตอบกลับข้อความ

หมายเหตุ:
อัลกอริทึมลายเซ็น: ใช้คีย์ API ของผู้ใช้เป็นคีย์การเข้ารหัสเพื่อดำเนินการ HmacSHA256 บนเวลาประทับ itime ส่งผลให้ได้สตริงเลขฐานสิบหก

การตอบกลับข้อความเปิดอีเมล

เวลาทริกเกอร์: เมื่อผู้รับเปิดอีเมล

response

Parameter Type Description
event string open
response_data json object ข้อมูลการตอบกลับ
message string เปิดอีเมล
task_id int รหัสงาน
api_user string ผู้ใช้ API
email_id string รหัสอีเมล
label_id int รหัสป้ายกำกับ
ip string IP การดำเนินการ
explorer_name string ชื่อเบราว์เซอร์
explorer_ver string เวอร์ชันเบราว์เซอร์
os_name string ชื่อระบบปฏิบัติการ
os_ver string เวอร์ชันระบบปฏิบัติการ
{ "server": "email", "message_id": "1676618583015_104117_18546_8822.sc-10_43_7_16-inbound0$12345@hotmail.com", "to": "12345@hotmail.com", "itime": 1676620370426, "response": { "event": "open", "response_data": { "email_id": "1676618583015_104117_18546_8822.sc-10_43_7_16-inbound0$12345@hotmail.com", "explorer_ver": "101.0.4951", "os_ver": "8", "explorer_name": "Chrome", "ip": "8.219.124.204", "os_name": "Windows", "task_id": "0", "api_user": "JGgkm3wedVik_test_y1mQMX", "message": "open email", "label_id": 0 } }, "custom_args": {} }
              
              {
    "server": "email", 
    "message_id": "1676618583015_104117_18546_8822.sc-10_43_7_16-inbound0$12345@hotmail.com", 
    "to": "12345@hotmail.com", 
    "itime": 1676620370426, 
    "response": {
        "event": "open", 
        "response_data": {
            "email_id": "1676618583015_104117_18546_8822.sc-10_43_7_16-inbound0$12345@hotmail.com", 
            "explorer_ver": "101.0.4951", 
            "os_ver": "8", 
            "explorer_name": "Chrome", 
            "ip": "8.219.124.204", 
            "os_name": "Windows", 
            "task_id": "0", 
            "api_user": "JGgkm3wedVik_test_y1mQMX", 
            "message": "open email", 
            "label_id": 0
        }
    },
    "custom_args": {}
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ข้อความตอบกลับเมื่อคลิกลิงก์ในอีเมล

เวลาทริกเกอร์: ผู้รับคลิกลิงก์ในอีเมล

การตอบกลับ

พารามิเตอร์ ประเภท คำอธิบาย
event string click
response_data json object ข้อมูลการตอบกลับ
message string คลิกอีเมล
task_id int รหัสงาน
api_user string ผู้ใช้ API
email_id string รหัสอีเมล
label_id int รหัสป้ายกำกับ
url string URL ที่คลิก
ip string IP การดำเนินการ
explorer_name string ชื่อเบราว์เซอร์
explorer_ver string เวอร์ชันเบราว์เซอร์
os_name string ชื่อระบบปฏิบัติการ
os_ver string เวอร์ชันระบบปฏิบัติการ
{ "server": "email", "message_id": "1676618583015_104117_18546_8822.sc-10_43_7_16-inbound0$12345@hotmail.com", "to": "12345@hotmail.com", "itime": 1676620370426, "response": { "event": "click", "response_data": { "email_id": "1676618583015_104117_18546_8822.sc-10_43_7_16-inbound0$12345@hotmail.com", "explorer_ver": "101.0.4951", "os_ver": "8", "explorer_name": "Chrome", "ip": "8.219.124.204", "url": "https://www.engagelab.com/zh_CN/email/", "os_name": "Windows", "task_id": "0", "api_user": "JGgkm3wedVik_test_y1mQMX", "message": "click email", "label_id": 0 } }, "custom_args": {} }
              
              {
    "server": "email", 
    "message_id": "1676618583015_104117_18546_8822.sc-10_43_7_16-inbound0$12345@hotmail.com", 
    "to": "12345@hotmail.com", 
    "itime": 1676620370426, 
    "response": {
        "event": "click", 
        "response_data": {
            "email_id": "1676618583015_104117_18546_8822.sc-10_43_7_16-inbound0$12345@hotmail.com", 
            "explorer_ver": "101.0.4951", 
            "os_ver": "8", 
            "explorer_name": "Chrome", 
            "ip": "8.219.124.204", 
            "url": "https://www.engagelab.com/zh_CN/email/", 
            "os_name": "Windows", 
            "task_id": "0", 
            "api_user": "JGgkm3wedVik_test_y1mQMX", 
            "message": "click email", 
            "label_id": 0
        }
    },
    "custom_args": {}
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ข้อความตอบกลับการยกเลิกการสมัครอีเมล

เวลาทริกเกอร์: ผู้รับคลิกยกเลิกการสมัคร

การตอบกลับ

พารามิเตอร์ ประเภท คำอธิบาย
event string ยกเลิกการสมัคร
response_data json object ข้อมูลการตอบกลับ
message string ยกเลิกอีเมล
task_id int รหัสงาน
api_user string ผู้ใช้ API
email_id string รหัสอีเมล
label_id int รหัสป้ายกำกับ
ip string IP การดำเนินการ
explorer_name string ชื่อเบราว์เซอร์
explorer_ver string เวอร์ชันของเบราว์เซอร์
os_name string ชื่อระบบปฏิบัติการ
os_ver string เวอร์ชันของระบบปฏิบัติการ
{ "server": "email", "message_id": "1676460128030_100669_28018_8253.sg-10_1_253_26-inbound86$12345@gmail.com", "to": "12345@gmail.com", "itime": 1676623616503, "response": { "event": "unsubscribe", "response_data": { "email_id": "1676460128030_100669_28018_8253.sg-10_1_253_26-inbound86$12345@gmail.com", "explorer_ver": "16.2", "os_ver": "16.2", "explorer_name": "Mobile Safari", "ip": "80.14.210.102", "os_name": "iOS", "task_id": "0", "api_user": "1224_xjm", "message": "unsubscribe email", "label_id": 221223 } }, "custom_args": {} }
              
              {
    "server": "email", 
    "message_id": "1676460128030_100669_28018_8253.sg-10_1_253_26-inbound86$12345@gmail.com", 
    "to": "12345@gmail.com", 
    "itime": 1676623616503, 
    "response": {
        "event": "unsubscribe", 
        "response_data": {
            "email_id": "1676460128030_100669_28018_8253.sg-10_1_253_26-inbound86$12345@gmail.com", 
            "explorer_ver": "16.2", 
            "os_ver": "16.2", 
            "explorer_name": "Mobile Safari", 
            "ip": "80.14.210.102", 
            "os_name": "iOS", 
            "task_id": "0", 
            "api_user": "1224_xjm", 
            "message": "unsubscribe email", 
            "label_id": 221223
        }
    },
    "custom_args": {}
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ข้อความตอบกลับ Email report_spam

เวลาทริกเกอร์: ผู้รับทำเครื่องหมายว่าเป็นสแปม

การตอบกลับ

พารามิเตอร์ ประเภท คำอธิบาย
event string report_spam
response_data json object ข้อมูลการตอบกลับ
api_user string ผู้ใช้ API
email_id string รหัสอีเมล
label_id int รหัสป้ายกำกับ
{ "server": "email", "message_id": "1676857822846_15_23558_89.sg-10_1_253_26-inbound0$12345@gmail.com", "to": "12345@gmail.com", "itime": 1677548340323, "response": { "event": "report_spam", "response_data": { "email_id": "1676857822846_15_23558_89.sg-10_1_253_26-inbound0$1406064670@gmail.com", "api_user": "huangli", "label_id": 0 } }, "custom_args": {} }
              
              {
    "server": "email", 
    "message_id": "1676857822846_15_23558_89.sg-10_1_253_26-inbound0$12345@gmail.com", 
    "to": "12345@gmail.com", 
    "itime": 1677548340323, 
    "response": {
        "event": "report_spam", 
        "response_data": {
            "email_id": "1676857822846_15_23558_89.sg-10_1_253_26-inbound0$1406064670@gmail.com", 
            "api_user": "huangli", 
            "label_id": 0
        }
    },
    "custom_args": {}
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ข้อความตอบกลับเส้นทางอีเมล

เวลาทริกเกอร์: ผู้รับตอบกลับ/ส่งไปยังเส้นทางที่รับ

การตอบกลับ

พารามิเตอร์ ประเภท คำอธิบาย
event string route
response_data json object ข้อมูลการตอบกลับ
message string เส้นทาง mx
html string ข้อความต้นฉบับของอีเมลในรูปแบบ HTML
text string ข้อความต้นฉบับของอีเมลในรูปแบบข้อความธรรมดา
headers string ส่วนหัวของอีเมลที่ถูกส่งต่อ
from_name string ชื่อผู้ส่ง
subject string หัวข้ออีเมล
from string ที่อยู่ผู้ส่ง
reference string อ้างอิง
email_id string รหัสอีเมล
raw_message string ข้อความต้นฉบับของอีเมล
raw_message_url string URL สำหรับดาวน์โหลดข้อความต้นฉบับของอีเมล
x_mx_mailfrom string x_mx_mailfrom
x_mx_rcptto string x_mx_rcptto
label_id int รหัสป้ายกำกับ
{ "server": "email", "message_id": "01b6f68b-da52-4f6f-a049-68d0ca01dd8c", "to": "Goblin <12345@gmail.com>;Illidan <12345@hotmail.com>", "itime": 1676618346192, "response": { "event": "route", "response_data": { "headers": { "Cc": "Malfurion <12345@gmail.com>", "To": "Goblin <12345@gmail.com>", "Content-Type": "multipart/alternative; boundary=\"00000000000092f9ca05f4e02010\"", "From": "Archimonde <12345@outlook.com>", "MIME-Version": "1.0", "Date": "Fri, 17 Feb 2023 12:48:48 +0530", "Subject": "Re: Work plan for next month" }, "raw_message": "Received: from MAIL-ED1-F51.GOOGLE.COM (unknown [209.85.208.51])by mx2.sendcloud.org with SMTP ......", "subject": "Re: Work plan for next month", "x_mx_rcptto": "12345@icloud.com", "html": "<div dir=\"ltr\">Hi Team,<div><br></div><div>Let's start ......", "from": "Archimonde <12345@outlook.com>", "text": "Hi Team,Let's start ......", "x_mx_mailfrom": "12345@hotmail.com", "message": "mx route", "from_name": "Sargeras", "raw_message_url": "https://......eml" "label_id": 0 } }, "custom_args": {} }
              
              {
    "server": "email", 
    "message_id": "01b6f68b-da52-4f6f-a049-68d0ca01dd8c", 
    "to": "Goblin <12345@gmail.com>;Illidan <12345@hotmail.com>", 
    "itime": 1676618346192, 
    "response": {
        "event": "route", 
        "response_data": {
            "headers": {
                "Cc": "Malfurion <12345@gmail.com>", 
                "To": "Goblin <12345@gmail.com>", 
                "Content-Type": "multipart/alternative; boundary=\"00000000000092f9ca05f4e02010\"", 
                "From": "Archimonde <12345@outlook.com>", 
                "MIME-Version": "1.0", 
                "Date": "Fri, 17 Feb 2023 12:48:48 +0530", 
                "Subject": "Re: Work plan for next month"
            }, 
            "raw_message": "Received: from MAIL-ED1-F51.GOOGLE.COM (unknown [209.85.208.51])by mx2.sendcloud.org with SMTP ......", 
            "subject": "Re: Work plan for next month", 
            "x_mx_rcptto": "12345@icloud.com", 
            "html": "<div dir=\"ltr\">Hi Team,<div><br></div><div>Let's start ......", 
            "from": "Archimonde <12345@outlook.com>", 
            "text": "Hi Team,Let's start ......", 
            "x_mx_mailfrom": "12345@hotmail.com", 
            "message": "mx route", 
            "from_name": "Sargeras", 
            "raw_message_url": "https://......eml"
            "label_id": 0
        }
    },
    "custom_args": {}
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
icon
ติดต่อฝ่ายขาย