{"id":820,"date":"2026-04-27T11:42:32","date_gmt":"2026-04-27T11:42:32","guid":{"rendered":"https:\/\/rcs-api.com\/?post_type=docs&#038;p=820"},"modified":"2026-04-29T11:09:31","modified_gmt":"2026-04-29T11:09:31","password":"","slug":"hantera-knapptryck-genom-postbackdata","status":"publish","type":"docs","link":"https:\/\/rcs-api.com\/en\/dokumentation\/callbacks\/hantera-knapptryck-genom-postbackdata\/","title":{"rendered":"Handle button presses with PostBackData"},"content":{"rendered":"\n<p><strong>postbackData<\/strong> \u00e4r en osynlig str\u00e4ng (payload) som du bifogar till varje interaktiv knapp (Suggestion) i ditt RCS-meddelande. N\u00e4r en anv\u00e4ndare klickar p\u00e5 en knapp, skickas denna str\u00e4ng tillbaka till din server via en webhook.<\/p>\n\n\n\n<p>Medan <code>text<\/code>-f\u00e4ltet p\u00e5 en knapp \u00e4r det som anv\u00e4ndaren ser (t.ex. &#8221;Ja tack!&#8221;), \u00e4r <code>postbackData<\/code> det som din kod l\u00e4ser (t.ex. <code>user_confirmed_subscription_v1<\/code>).<\/p>\n\n\n\n<p><strong>Identifiering:<\/strong> Du kan exakt veta vilken knapp anv\u00e4ndaren klickade p\u00e5, \u00e4ven om flera knappar har samma text (t.ex. &#8221;V\u00e4lj&#8221; under olika produkter i en karusell).<\/p>\n\n\n\n<p><strong>Spr\u00e5koberoende:<\/strong> Du kan \u00e4ndra knappens text fr\u00e5n &#8221;K\u00f6p&#8221; till &#8221;Buy&#8221; utan att beh\u00f6va \u00e4ndra din logik i backend, eftersom <code>postbackData<\/code> f\u00f6rblir densamma.<\/p>\n\n\n\n<p><strong>Automation:<\/strong> Det g\u00f6r det m\u00f6jligt att trigga n\u00e4sta steg i en konversation automatiskt (t.ex. skicka en bekr\u00e4ftelse direkt n\u00e4r klicket registreras).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-hur-fungerar-flodet\" style=\"margin-top:40px;margin-bottom:10px\">Hur fungerar fl\u00f6det?<\/h3>\n\n\n\n<p><strong>S\u00e4ndning:<\/strong> Du skickar ett meddelande med en knapp d\u00e4r <code>postbackData<\/code> \u00e4r satt till <code>order_123_confirm<\/code>.<\/p>\n\n\n\n<p><strong>Interaktion:<\/strong> Anv\u00e4ndaren ser knappen &#8221;Bekr\u00e4fta order&#8221; och klickar p\u00e5 den.<\/p>\n\n\n\n<p><strong>Retur:<\/strong> Mottagarens telefon skickar tillbaka str\u00e4ngen <code>order_123_confirm<\/code> till RCS-plattformen.<\/p>\n\n\n\n<p><strong>Webhook:<\/strong> iP.1 Networks skickar ett HTTP-anrop till din f\u00f6rdefinierade <code>deliveryReportUrl<\/code> med denna data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-tekniska-specifikationer\" style=\"margin-top:40px;margin-bottom:10px\">Tekniska specifikationer<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Egenskap<\/td><td>Detaljer<\/td><\/tr><tr><td>Typ<\/td><td>String<\/td><\/tr><tr><td>L\u00e4ngd<\/td><td>Rekommenderas att h\u00e5llas under 1024 tecken f\u00f6r optimal prestanda.<\/td><\/tr><tr><td>Format<\/td><td>Valfritt, men ofta anv\u00e4nds JSON eller <code>snake_case<\/code> f\u00f6r enkel parsning.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-exempel-pa-anvandning\" style=\"margin-top:40px;margin-bottom:10px\">Exempel p\u00e5 anv\u00e4ndning<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Scenario A: Enkelt val (Ja\/Nej)<\/h4>\n\n\n\n<p>I ett meddelande om tidsbokning kan du ha tv\u00e5 knappar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Knapp 1:<\/strong> Text: &#8221;Ja&#8221;, postbackData: <code>appointment_confirm_id_888<\/code><\/li>\n\n\n\n<li><strong>Knapp 2:<\/strong> Text: &#8221;Nej, boka om&#8221;, postbackData: <code>appointment_reschedule_id_888<\/code><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Scenario B: Karusell med produkter<\/h4>\n\n\n\n<p>Om du skickar en karusell med tre olika tr\u00f6jor kan du anv\u00e4nda <code>postbackData<\/code> f\u00f6r att inkludera artikelnummer:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kort 1:<\/strong> postbackData: <code>sku_99_blue_large<\/code><\/li>\n\n\n\n<li><strong>Kort 2:<\/strong> postbackData: <code>sku_102_red_medium<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-best-practices\" style=\"margin-top:40px;margin-bottom:10px\">Best Practices<\/h3>\n\n\n\n<p><strong>Anv\u00e4nd unika ID:n:<\/strong> Inkludera alltid ett unikt referens-ID (t.ex. ett order-ID) i din postbackData s\u00e5 att du vet exakt vilken transaktion klicket r\u00f6r.<\/p>\n\n\n\n<p><strong>Maskinl\u00e4sbart format:<\/strong> Om du har mycket information, anv\u00e4nd ett format som din server l\u00e4tt kan l\u00e4sa, t.ex: <code>{\"action\": \"verify\", \"user\": \"46700123456\", \"ver\": 1}<\/code>.<\/p>\n\n\n\n<p><strong>Loggning:<\/strong> Spara alltid den <code>uniqueId<\/code> du skickade i ursprungsmeddelandet tillsammans med f\u00f6rv\u00e4ntad <code>postbackData<\/code> i din databas f\u00f6r att kunna st\u00e4nga loopen vid svar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-exempel-pa-webhook-payload\">Exempel p\u00e5 Webhook-payload<\/h3>\n\n\n\n<div class=\"betterdocs-code-snippet-wrapper theme-dark betterdocs-code-snippet-98cc9aa4\"\n     id=\"betterdocs-code-snippet-98cc9aa4\"\n     data-language=\"json\"\n     data-copy-button=\"true\">\n\n            <div class=\"betterdocs-code-snippet-header betterdocs-file-preview-header\">\n        <div class=\"betterdocs-file-preview-left\">\n                            <div class=\"betterdocs-traffic-lights\">\n                    <span class=\"traffic-light traffic-light-red\"><\/span>\n                    <span class=\"traffic-light traffic-light-yellow\"><\/span>\n                    <span class=\"traffic-light traffic-light-green\"><\/span>\n                <\/div>\n            \n            <div class=\"betterdocs-file-info\">\n                                    <div class=\"betterdocs-file-icon\">\n                                                    <span class=\"betterdocs-file-icon-emoji\">\ud83d\udccb<\/span>\n                                            <\/div>\n                \n                                    <div class=\"betterdocs-file-name\">\n                        <span class=\"file-name-text\">Webhook Payload (JSON)<\/span>\n                    <\/div>\n                            <\/div>\n        <\/div>\n\n        <div class=\"betterdocs-file-preview-right\">\n                            <div class=\"betterdocs-code-snippet-copy-container\">\n                    <button class=\"betterdocs-code-snippet-copy-button\"\n                            type=\"button\"\n                            data-clipboard-target=\"#betterdocs-code-snippet-98cc9aa4 .betterdocs-code-snippet-code code\"\n                            aria-label=\"Copy code to clipboard\">\n                        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"\/>\n                        <\/svg>\n                    <\/button>\n                                            <div class=\"betterdocs-code-snippet-tooltip\">Copy to clipboard<\/div>\n                                    <\/div>\n                    <\/div>\n        <\/div>\n    \n    <div class=\"betterdocs-code-snippet-content\">\n                    <div class=\"betterdocs-code-snippet-line-numbers\" aria-hidden=\"true\">\n                                    <div class=\"line-number\">1<\/div>\n                                    <div class=\"line-number\">2<\/div>\n                                    <div class=\"line-number\">3<\/div>\n                                    <div class=\"line-number\">4<\/div>\n                                    <div class=\"line-number\">5<\/div>\n                                    <div class=\"line-number\">6<\/div>\n                                    <div class=\"line-number\">7<\/div>\n                                    <div class=\"line-number\">8<\/div>\n                                    <div class=\"line-number\">9<\/div>\n                                    <div class=\"line-number\">10<\/div>\n                                    <div class=\"line-number\">11<\/div>\n                            <\/div>\n        \n        <pre class=\"betterdocs-code-snippet-code language-json\"><code>{\n  &quot;messageId&quot;: &quot;msg-123456789&quot;,\n  &quot;conversationId&quot;: &quot;conv-987654321&quot;,\n  &quot;sender&quot;: &quot;46700123456&quot;,\n  &quot;agent&quot;: &quot;Kundservice&quot;,\n  &quot;brand&quot;: &quot;Min-Butik-AB&quot;,\n  &quot;type&quot;: &quot;SUGGESTION_RESPONSE&quot;,\n  &quot;postbackData&quot;: &quot;track_package_click&quot;,\n  &quot;text&quot;: &quot;Sp\u00e5ra paket&quot;,\n  &quot;timestamp&quot;: &quot;2026-03-17T16:05:10Z&quot;\n}<\/code><\/pre>\n    <\/div>\n<\/div>\n\n<script type=\"text\/javascript\">\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ Initialize copy functionality for this specific snippet\n    const snippet = document.getElementById('betterdocs-code-snippet-98cc9aa4');\n    if (snippet && window.BetterDocsCodeSnippet) {\n        window.BetterDocsCodeSnippet.initCopyButton(snippet);\n    }\n});\n<\/script>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-forklaring-av-webhook-falt\">F\u00f6rklaring av webhook-f\u00e4lt<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>F\u00e4ltnamn<\/td><td>Beskrivning<\/td><td>Varf\u00f6r \u00e4r det viktigt?<\/td><\/tr><tr><td>messageId<\/td><td>ID f\u00f6r det ursprungliga meddelandet.<\/td><td>Anv\u00e4nds f\u00f6r att se vilket specifikt utskick kunden svarar p\u00e5.<\/td><\/tr><tr><td>sender<\/td><td>Mottagarens telefonnummer (MSISDN).<\/td><td>F\u00f6r att veta vilken kund som klickade s\u00e5 att du kan uppdatera r\u00e4tt profil.<\/td><\/tr><tr><td>type<\/td><td>Typ av h\u00e4ndelse.<\/td><td>I detta fall <code>SUGGESTION_RESPONSE<\/code>, vilket betyder att en knapp har tryckts.<\/td><\/tr><tr><td>postbackData<\/td><td>Den dolda str\u00e4ngen.<\/td><td>Det \u00e4r denna du anv\u00e4nder i din <code>if<\/code>&#8211; eller <code>switch<\/code>-sats f\u00f6r att trigga logik.<\/td><\/tr><tr><td>text<\/td><td>Den synliga texten p\u00e5 knappen.<\/td><td>Kan anv\u00e4ndas f\u00f6r loggning, men b\u00f6r inte anv\u00e4ndas f\u00f6r aff\u00e4rslogik.<\/td><\/tr><tr><td>timestamp<\/td><td>Tidpunkt f\u00f6r klicket.<\/td><td>F\u00f6r att kunna logga exakt n\u00e4r interaktionen skedde.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" style=\"margin-top:40px;margin-bottom:40px\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-exempel-pa-hantering-av-rcs-webhook-c\" style=\"margin-top:40px;margin-bottom:40px\">Exempel p\u00e5 hantering av RCS Webhook (C#)<\/h2>\n\n\n\n<p>I C# vill vi oftast ha en starkt typad modell f\u00f6r att kunna dra nytta av IntelliSense och undvika stavfel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:40px;margin-bottom:10px\">1. Skapa en modell f\u00f6r Webhook-datan<\/h3>\n\n\n\n<p>F\u00f6rst skapar vi en klass som matchar JSON-strukturen vi f\u00e5r fr\u00e5n iP.1 Networks.<\/p>\n\n\n\n<div class=\"betterdocs-code-snippet-wrapper theme-dark betterdocs-code-snippet-91512ce4\"\n     id=\"betterdocs-code-snippet-91512ce4\"\n     data-language=\"csharp\"\n     data-copy-button=\"true\">\n\n            <div class=\"betterdocs-code-snippet-header betterdocs-file-preview-header\">\n        <div class=\"betterdocs-file-preview-left\">\n                            <div class=\"betterdocs-traffic-lights\">\n                    <span class=\"traffic-light traffic-light-red\"><\/span>\n                    <span class=\"traffic-light traffic-light-yellow\"><\/span>\n                    <span class=\"traffic-light traffic-light-green\"><\/span>\n                <\/div>\n            \n            <div class=\"betterdocs-file-info\">\n                                    <div class=\"betterdocs-file-icon\">\n                                                    <span class=\"betterdocs-file-icon-emoji\">\ud83d\udd37<\/span>\n                                            <\/div>\n                \n                                    <div class=\"betterdocs-file-name\">\n                        <span class=\"file-name-text\">Modell Webhook (C#)<\/span>\n                    <\/div>\n                            <\/div>\n        <\/div>\n\n        <div class=\"betterdocs-file-preview-right\">\n                            <div class=\"betterdocs-code-snippet-copy-container\">\n                    <button class=\"betterdocs-code-snippet-copy-button\"\n                            type=\"button\"\n                            data-clipboard-target=\"#betterdocs-code-snippet-91512ce4 .betterdocs-code-snippet-code code\"\n                            aria-label=\"Copy code to clipboard\">\n                        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"\/>\n                        <\/svg>\n                    <\/button>\n                                            <div class=\"betterdocs-code-snippet-tooltip\">Copy to clipboard<\/div>\n                                    <\/div>\n                    <\/div>\n        <\/div>\n    \n    <div class=\"betterdocs-code-snippet-content\">\n                    <div class=\"betterdocs-code-snippet-line-numbers\" aria-hidden=\"true\">\n                                    <div class=\"line-number\">1<\/div>\n                                    <div class=\"line-number\">2<\/div>\n                                    <div class=\"line-number\">3<\/div>\n                                    <div class=\"line-number\">4<\/div>\n                                    <div class=\"line-number\">5<\/div>\n                                    <div class=\"line-number\">6<\/div>\n                                    <div class=\"line-number\">7<\/div>\n                                    <div class=\"line-number\">8<\/div>\n                                    <div class=\"line-number\">9<\/div>\n                                    <div class=\"line-number\">10<\/div>\n                                    <div class=\"line-number\">11<\/div>\n                                    <div class=\"line-number\">12<\/div>\n                            <\/div>\n        \n        <pre class=\"betterdocs-code-snippet-code language-csharp\"><code>public class RcsWebhookRequest\n{\n    public string MessageId { get; set; }\n    public string ConversationId { get; set; }\n    public string Sender { get; set; } \/\/ Mottagarens telefonnummer\n    public string Agent { get; set; }\n    public string Brand { get; set; }\n    public string Type { get; set; } \/\/ T.ex. &quot;SUGGESTION_RESPONSE&quot;\n    public string PostbackData { get; set; }\n    public string Text { get; set; }\n    public DateTime Timestamp { get; set; }\n}<\/code><\/pre>\n    <\/div>\n<\/div>\n\n<script type=\"text\/javascript\">\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ Initialize copy functionality for this specific snippet\n    const snippet = document.getElementById('betterdocs-code-snippet-91512ce4');\n    if (snippet && window.BetterDocsCodeSnippet) {\n        window.BetterDocsCodeSnippet.initCopyButton(snippet);\n    }\n});\n<\/script>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:40px;margin-bottom:10px\">2. Skapa din API Controller<\/h3>\n\n\n\n<p>H\u00e4r bygger vi logiken f\u00f6r att &#8221;f\u00e5nga&#8221; klicket och utf\u00f6ra r\u00e4tt handling.<\/p>\n\n\n\n<div class=\"betterdocs-code-snippet-wrapper theme-dark betterdocs-code-snippet-2e980291\"\n     id=\"betterdocs-code-snippet-2e980291\"\n     data-language=\"csharp\"\n     data-copy-button=\"true\">\n\n            <div class=\"betterdocs-code-snippet-header betterdocs-file-preview-header\">\n        <div class=\"betterdocs-file-preview-left\">\n                            <div class=\"betterdocs-traffic-lights\">\n                    <span class=\"traffic-light traffic-light-red\"><\/span>\n                    <span class=\"traffic-light traffic-light-yellow\"><\/span>\n                    <span class=\"traffic-light traffic-light-green\"><\/span>\n                <\/div>\n            \n            <div class=\"betterdocs-file-info\">\n                                    <div class=\"betterdocs-file-icon\">\n                                                    <span class=\"betterdocs-file-icon-emoji\">\ud83d\udd37<\/span>\n                                            <\/div>\n                \n                                    <div class=\"betterdocs-file-name\">\n                        <span class=\"file-name-text\">Controller (C#)<\/span>\n                    <\/div>\n                            <\/div>\n        <\/div>\n\n        <div class=\"betterdocs-file-preview-right\">\n                            <div class=\"betterdocs-code-snippet-copy-container\">\n                    <button class=\"betterdocs-code-snippet-copy-button\"\n                            type=\"button\"\n                            data-clipboard-target=\"#betterdocs-code-snippet-2e980291 .betterdocs-code-snippet-code code\"\n                            aria-label=\"Copy code to clipboard\">\n                        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"\/>\n                        <\/svg>\n                    <\/button>\n                                            <div class=\"betterdocs-code-snippet-tooltip\">Copy to clipboard<\/div>\n                                    <\/div>\n                    <\/div>\n        <\/div>\n    \n    <div class=\"betterdocs-code-snippet-content\">\n                    <div class=\"betterdocs-code-snippet-line-numbers\" aria-hidden=\"true\">\n                                    <div class=\"line-number\">1<\/div>\n                                    <div class=\"line-number\">2<\/div>\n                                    <div class=\"line-number\">3<\/div>\n                                    <div class=\"line-number\">4<\/div>\n                                    <div class=\"line-number\">5<\/div>\n                                    <div class=\"line-number\">6<\/div>\n                                    <div class=\"line-number\">7<\/div>\n                                    <div class=\"line-number\">8<\/div>\n                                    <div class=\"line-number\">9<\/div>\n                                    <div class=\"line-number\">10<\/div>\n                                    <div class=\"line-number\">11<\/div>\n                                    <div class=\"line-number\">12<\/div>\n                                    <div class=\"line-number\">13<\/div>\n                                    <div class=\"line-number\">14<\/div>\n                                    <div class=\"line-number\">15<\/div>\n                                    <div class=\"line-number\">16<\/div>\n                                    <div class=\"line-number\">17<\/div>\n                                    <div class=\"line-number\">18<\/div>\n                                    <div class=\"line-number\">19<\/div>\n                                    <div class=\"line-number\">20<\/div>\n                                    <div class=\"line-number\">21<\/div>\n                                    <div class=\"line-number\">22<\/div>\n                                    <div class=\"line-number\">23<\/div>\n                                    <div class=\"line-number\">24<\/div>\n                                    <div class=\"line-number\">25<\/div>\n                                    <div class=\"line-number\">26<\/div>\n                                    <div class=\"line-number\">27<\/div>\n                                    <div class=\"line-number\">28<\/div>\n                                    <div class=\"line-number\">29<\/div>\n                                    <div class=\"line-number\">30<\/div>\n                                    <div class=\"line-number\">31<\/div>\n                                    <div class=\"line-number\">32<\/div>\n                                    <div class=\"line-number\">33<\/div>\n                                    <div class=\"line-number\">34<\/div>\n                                    <div class=\"line-number\">35<\/div>\n                                    <div class=\"line-number\">36<\/div>\n                                    <div class=\"line-number\">37<\/div>\n                                    <div class=\"line-number\">38<\/div>\n                                    <div class=\"line-number\">39<\/div>\n                                    <div class=\"line-number\">40<\/div>\n                                    <div class=\"line-number\">41<\/div>\n                                    <div class=\"line-number\">42<\/div>\n                                    <div class=\"line-number\">43<\/div>\n                                    <div class=\"line-number\">44<\/div>\n                                    <div class=\"line-number\">45<\/div>\n                                    <div class=\"line-number\">46<\/div>\n                                    <div class=\"line-number\">47<\/div>\n                                    <div class=\"line-number\">48<\/div>\n                                    <div class=\"line-number\">49<\/div>\n                                    <div class=\"line-number\">50<\/div>\n                                    <div class=\"line-number\">51<\/div>\n                            <\/div>\n        \n        <pre class=\"betterdocs-code-snippet-code language-csharp\"><code>using Microsoft.AspNetCore.Mvc;\n\n[ApiController]\n[Route(&quot;api\/webhooks&quot;)]\npublic class RcsWebhookController : ControllerBase\n{\n    [HttpPost(&quot;rcs-callback&quot;)]\n    public IActionResult HandleRcsInteraction([FromBody] RcsWebhookRequest request)\n    {\n        \/\/ 1. Logga inkommande klick f\u00f6r fels\u00f6kning\n        Console.WriteLine($&quot;Anv\u00e4ndare {request.Sender} klickade p\u00e5: {request.Text}&quot;);\n\n        \/\/ 2. Kontrollera att det faktiskt \u00e4r ett knapptryck (Suggestion)\n        if (request.Type != &quot;SUGGESTION_RESPONSE&quot;)\n        {\n            return Ok(); \/\/ Vi svarar 200 \u00e4ven om vi inte hanterar just denna typ\n        }\n\n        \/\/ 3. Agera baserat p\u00e5 postbackData\n        switch (request.PostbackData)\n        {\n            case &quot;track_package_click&quot;:\n                \/\/ Anropa din frakt-tj\u00e4nst\n                bool success = NotifyShippingService(request.Sender);\n                break;\n\n            case &quot;claim_offer_v1&quot;:\n                \/\/ Aktivera rabattkod i databasen\n                ActivateVoucher(request.Sender, &quot;SPRING2026&quot;);\n                break;\n\n            case &quot;confirm_appointment&quot;:\n                \/\/ Uppdatera bokningsstatus\n                UpdateCalendarStatus(request.Sender, true);\n                break;\n\n            default:\n                \/\/ Logga ok\u00e4nd postbackData f\u00f6r framtida uppdateringar\n                Console.WriteLine($&quot;Ok\u00e4nd handling: {request.PostbackData}&quot;);\n                break;\n        }\n\n        \/\/ 4. Svara ALLTID 200 OK snabbt f\u00f6r att bekr\u00e4fta mottagandet\n        return Ok(new { status = &quot;received&quot; });\n    }\n\n    \/\/ Exempel p\u00e5 interna metoder f\u00f6r aff\u00e4rslogik\n    private void ActivateVoucher(string msisdn, string code) { \/* Din logik h\u00e4r *\/ }\n    private bool NotifyShippingService(string msisdn) { \/* Din logik h\u00e4r *\/ return true; }\n    private void UpdateCalendarStatus(string msisdn, bool confirmed) { \/* Din logik h\u00e4r *\/ }\n}<\/code><\/pre>\n    <\/div>\n<\/div>\n\n<script type=\"text\/javascript\">\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ Initialize copy functionality for this specific snippet\n    const snippet = document.getElementById('betterdocs-code-snippet-2e980291');\n    if (snippet && window.BetterDocsCodeSnippet) {\n        window.BetterDocsCodeSnippet.initCopyButton(snippet);\n    }\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>postbackData \u00e4r en osynlig str\u00e4ng (payload) som du bifogar till varje interaktiv knapp (Suggestion) i ditt RCS-meddelande. N\u00e4r en anv\u00e4ndare klickar p\u00e5 en knapp, skickas denna str\u00e4ng tillbaka till din server via en webhook. Medan text-f\u00e4ltet p\u00e5 en knapp \u00e4r det som anv\u00e4ndaren ser (t.ex. &#8221;Ja tack!&#8221;), \u00e4r postbackData det som din kod l\u00e4ser (t.ex. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"doc_category":[28],"doc_tag":[],"class_list":["post-820","docs","type-docs","status-publish","hentry","doc_category-callbacks"],"year_month":"2026-04","word_count":580,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"patrik bronner","author_nicename":"patrik-bronnerip1-se","author_url":"https:\/\/rcs-api.com\/en\/author\/patrik-bronnerip1-se\/"},"doc_category_info":[{"term_name":"Callbacks","term_url":"https:\/\/rcs-api.com\/en\/dokumentation\/callbacks\/"}],"doc_tag_info":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Hantera knapptryck genom PostBackData - RCS-API.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rcs-api.com\/en\/documentation\/callbacks\/hantera-knapptryck-genom-postbackdata\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hantera knapptryck genom PostBackData\" \/>\n<meta property=\"og:description\" content=\"postbackData \u00e4r en osynlig str\u00e4ng (payload) som du bifogar till varje interaktiv knapp (Suggestion) i ditt RCS-meddelande. N\u00e4r en anv\u00e4ndare klickar p\u00e5 en knapp, skickas denna str\u00e4ng tillbaka till din server via en webhook. Medan text-f\u00e4ltet p\u00e5 en knapp \u00e4r det som anv\u00e4ndaren ser (t.ex. &#8221;Ja tack!&#8221;), \u00e4r postbackData det som din kod l\u00e4ser (t.ex. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rcs-api.com\/en\/documentation\/callbacks\/hantera-knapptryck-genom-postbackdata\/\" \/>\n<meta property=\"og:site_name\" content=\"RCS-API.com\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-29T11:09:31+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rcs-api.com\\\/dokumentation\\\/callbacks\\\/hantera-knapptryck-genom-postbackdata\\\/\",\"url\":\"https:\\\/\\\/rcs-api.com\\\/dokumentation\\\/callbacks\\\/hantera-knapptryck-genom-postbackdata\\\/\",\"name\":\"Hantera knapptryck genom PostBackData - RCS-API.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rcs-api.com\\\/#website\"},\"datePublished\":\"2026-04-27T11:42:32+00:00\",\"dateModified\":\"2026-04-29T11:09:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rcs-api.com\\\/dokumentation\\\/callbacks\\\/hantera-knapptryck-genom-postbackdata\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rcs-api.com\\\/dokumentation\\\/callbacks\\\/hantera-knapptryck-genom-postbackdata\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rcs-api.com\\\/dokumentation\\\/callbacks\\\/hantera-knapptryck-genom-postbackdata\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Hem\",\"item\":\"https:\\\/\\\/rcs-api.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dokumentation\",\"item\":\"https:\\\/\\\/rcs-api.com\\\/dokumentation\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Hantera knapptryck genom PostBackData\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rcs-api.com\\\/#website\",\"url\":\"https:\\\/\\\/rcs-api.com\\\/\",\"name\":\"RCS-API.com\",\"description\":\"Integrera n\u00e4sta generations kommunikation med v\u00e5rt RCS API\",\"publisher\":{\"@id\":\"https:\\\/\\\/rcs-api.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rcs-api.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/rcs-api.com\\\/#organization\",\"name\":\"RCS-API.com\",\"url\":\"https:\\\/\\\/rcs-api.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rcs-api.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/rcs-api.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/ip1-logo-white.svg\",\"contentUrl\":\"https:\\\/\\\/rcs-api.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/ip1-logo-white.svg\",\"width\":589,\"height\":292,\"caption\":\"RCS-API.com\"},\"image\":{\"@id\":\"https:\\\/\\\/rcs-api.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hantera knapptryck genom PostBackData - RCS-API.com","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rcs-api.com\/en\/documentation\/callbacks\/hantera-knapptryck-genom-postbackdata\/","og_locale":"en_US","og_type":"article","og_title":"Hantera knapptryck genom PostBackData","og_description":"postbackData \u00e4r en osynlig str\u00e4ng (payload) som du bifogar till varje interaktiv knapp (Suggestion) i ditt RCS-meddelande. N\u00e4r en anv\u00e4ndare klickar p\u00e5 en knapp, skickas denna str\u00e4ng tillbaka till din server via en webhook. Medan text-f\u00e4ltet p\u00e5 en knapp \u00e4r det som anv\u00e4ndaren ser (t.ex. &#8221;Ja tack!&#8221;), \u00e4r postbackData det som din kod l\u00e4ser (t.ex. [&hellip;]","og_url":"https:\/\/rcs-api.com\/en\/documentation\/callbacks\/hantera-knapptryck-genom-postbackdata\/","og_site_name":"RCS-API.com","article_modified_time":"2026-04-29T11:09:31+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/rcs-api.com\/dokumentation\/callbacks\/hantera-knapptryck-genom-postbackdata\/","url":"https:\/\/rcs-api.com\/dokumentation\/callbacks\/hantera-knapptryck-genom-postbackdata\/","name":"Hantera knapptryck genom PostBackData - RCS-API.com","isPartOf":{"@id":"https:\/\/rcs-api.com\/#website"},"datePublished":"2026-04-27T11:42:32+00:00","dateModified":"2026-04-29T11:09:31+00:00","breadcrumb":{"@id":"https:\/\/rcs-api.com\/dokumentation\/callbacks\/hantera-knapptryck-genom-postbackdata\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rcs-api.com\/dokumentation\/callbacks\/hantera-knapptryck-genom-postbackdata\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/rcs-api.com\/dokumentation\/callbacks\/hantera-knapptryck-genom-postbackdata\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Hem","item":"https:\/\/rcs-api.com\/"},{"@type":"ListItem","position":2,"name":"Dokumentation","item":"https:\/\/rcs-api.com\/dokumentation\/"},{"@type":"ListItem","position":3,"name":"Hantera knapptryck genom PostBackData"}]},{"@type":"WebSite","@id":"https:\/\/rcs-api.com\/#website","url":"https:\/\/rcs-api.com\/","name":"RCS-API.com","description":"Integrate the next generation of communication with our RCS API","publisher":{"@id":"https:\/\/rcs-api.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rcs-api.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/rcs-api.com\/#organization","name":"RCS-API.com","url":"https:\/\/rcs-api.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rcs-api.com\/#\/schema\/logo\/image\/","url":"https:\/\/rcs-api.com\/wp-content\/uploads\/2025\/10\/ip1-logo-white.svg","contentUrl":"https:\/\/rcs-api.com\/wp-content\/uploads\/2025\/10\/ip1-logo-white.svg","width":589,"height":292,"caption":"RCS-API.com"},"image":{"@id":"https:\/\/rcs-api.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/rcs-api.com\/en\/wp-json\/wp\/v2\/docs\/820","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rcs-api.com\/en\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/rcs-api.com\/en\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/rcs-api.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rcs-api.com\/en\/wp-json\/wp\/v2\/comments?post=820"}],"version-history":[{"count":3,"href":"https:\/\/rcs-api.com\/en\/wp-json\/wp\/v2\/docs\/820\/revisions"}],"predecessor-version":[{"id":1017,"href":"https:\/\/rcs-api.com\/en\/wp-json\/wp\/v2\/docs\/820\/revisions\/1017"}],"wp:attachment":[{"href":"https:\/\/rcs-api.com\/en\/wp-json\/wp\/v2\/media?parent=820"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/rcs-api.com\/en\/wp-json\/wp\/v2\/doc_category?post=820"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/rcs-api.com\/en\/wp-json\/wp\/v2\/doc_tag?post=820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}