Craft FunctionsãšCraft Counterã§åœããäžéæ°ã®ããããåŒãæœçãå®è£ ãã

Craft FunctionsãšCraft Counterãå©çšããŠåœããäžéæ°ãèæ ®ããããåŒãæœçãå®è£ ããæ¹æ³ã«ã€ããŠçŽ¹ä»ããŸãã
- Soichiro Yamaguchi
- Solution
- 10 May, 2024
ããã«ã¡ã¯ãCustomer Engineerã®å±±å£ã§ãïŒå æ¥ãåæ¢åµã³ãã³ã®åå Žçææ°äœã芳ã«è¡ããŸãããã©ã¹ã3åã§é©ãã®æ°äºå®ãã»ã»ã»ã培å€ã§äºç¿ãããããã§ããšãŠã楜ãããŸããïŒ
ããŠæ¬èšäºã§ã¯ãKARTEã®æ¥å®¢ãµãŒãã¹ãšCraftãçµã¿åãããŠãäžéãèšå®ãããåœããæ°ãæã€ããåŒãæœçã®å®è£ ããæ¹æ³ãã玹ä»ããŸãã
KARTEã®æšæºæ©èœã®ã¿ã䜿çšããŠããåŒãã¢ã¯ã·ã§ã³ãå®è£ ããå Žåãåœãããåºãåæ°ãã«ãŠã³ãããããšãå°é£ã§ããããšãã«ãŠã³ãã§ãããšããŠããäžéæ°ã«éããéã«é©åãªéç¥ãè¡ããæ åœè ãã¿ã€ã ãªãŒã«ã¢ã¯ã·ã§ã³ãåæ¢ããããªãã¬ãŒã·ã§ã³ãå¿ èŠã«ãªããŸãã
ããããCraft FunctionsãšCraft Counterã掻çšããããšã§ãåœãããåºãåæ°ãèªåã§éèšããåœãããäžéæ°ã«éããå Žåã«äœããã®åŠçãè¡ããããªã¢ã¯ã·ã§ã³ãå®è£ ã§ããŸãã
ãã®æ¹æ³ãçšããããšã§ãéçšã®æéãåæžãã€ã€ããŠãŒã¶ãŒã«é©åãªããåŒãæœçãæäŸããããšãå¯èœã«ãªããŸããæ¬èšäºã§ã¯ããã®å ·äœçãªå®è£ æé ã«ã€ããŠè©³ããã玹ä»ããŸãã
ã¢ãŠããããã€ã¡ãŒãž
æ¬èšäºã§çŽ¹ä»ããããåŒãæœçã®æçµçãªã¢ãŠããããã¯ã以äžã®ã€ã¡ãŒãžå³ã®éãã§ãã
ãã®ã€ã¡ãŒãžã¯ããŠãŒã¶ãŒããèŠããããåŒãã®çµæç»é¢ãè¡šããŠãããåœãããããºã¬ãçŽæçã«ç解ã§ããæ¥å®¢ã¢ã¯ã·ã§ã³ã«ãªã£ãŠããŸãã
ããã«ãã·ã¹ãã ã®å šäœæ§æã瀺ããå³ã以äžã«ç€ºããŸãã
ãã®å³ã¯ããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«åºã¥ããŠCraft Functionsãã©ã®ããã«åäœããåœãããåºãåæ°ã管çãã€ã€ãçµæãšããŠåœãããŸãã¯ããºã¬ãè¿ãã®ãã瀺ããŠããŸãã
泚æç¹
ãã®æœçãå®æœããåã«ã以äžã®ç¹ã«æ³šæããŠãã ããã
-
Craftã®Growthãã©ã³ä»¥äžãå©çšããŠããããšãåæãšããŠããŸãã
-
å®éã«ããåŒãæœçãè¡ãéã«ã¯ãããåŒãAPIã®äžæ£å©çšãé²ãããã«èªèšŒã·ã¹ãã ãšã®é£æºçãæ€èšããŠãã ããã
-
æ¬èšäºã§ã¯ãåäžãŠãŒã¶ãŒãããåŒãã«åå ã§ããã®ã¯èšå®ããæéééã«1åã«ããããšã§ãç°¡æçã«äžæ£å©çšãé²ããããªèšå®ãšããŠããŸãã
-
åœéžãŠãŒã¶ãŒã®äžèŠ§ãæœåºãããå ŽåãDatahubã®å¥çŽãå¿ èŠã«ãªããŸã
-
åœéžãŠãŒã¶ãŒã®ç®¡çãã/track/event/write APIçµç±ã§çºçãããKARTEã®ã€ãã³ãã§å®æœããŸããAPIã®åéãªã¯ãšã¹ãå¶éãè¶ ããå Žåã¯ãäžéãåŒãäžããå¿ èŠããããŸã
-
å®éã«ãã®ãããªæœçãéçšããå Žåã«ã¯ãæ¯å衚瀺æ³ã®èŠ³ç¹ãããåœããæ®æ°ã0ã«ãªã£ãæç¹ã§éããã«ãã£ã³ããŒã³ãçµäºããŠãã ããã
èšå®æé
èšå®ã®æé ã¯æ¬¡ã®éãã§ãã
- API v2 ã¢ããªãäœæãã
- API v2 ã¢ããªã® ã¢ã¯ã»ã¹ããŒã¯ã³ã Craft Secret Manager ã«ç»é²ãã
- Craft Functionsã®ãã¡ã³ã¯ã·ã§ã³ãäœæãã
- Craft Functionsã®ãšã³ããã€ã³ããäœæãã
- ã»ã°ã¡ã³ããäœæãã
- æ¥å®¢ãµãŒãã¹ãäœæãã é çªã«èŠãŠã¿ãŸãããã
1. API v2 ã¢ããªãäœæãã
KARTEã®APIãå©çšããããã«ãAPI v2ã¢ããªãäœæããŸãã
- ã¹ã㢠> API v2èšå® ããã¢ããªãæ°èŠäœæ
- ã¢ããªã¿ã€ã ã token ã«èšå®
-
å¿ èŠãªscopeãè¿œå
-
track.event.write
-
ã¢ããªãä¿åããäžåºŠã ã衚瀺ãããã¢ã¯ã»ã¹ããŒã¯ã³ãã¡ã¢ããŠãã
2. API v2 ã¢ããªã® ã¢ã¯ã»ã¹ããŒã¯ã³ã Craft Secret Manager ã«ç»é²ãã
API v2 ã¢ããªã®ã¢ã¯ã»ã¹ããŒã¯ã³ãCraft Functionsããå®å šã«å©çšããããã«ãCraft Secret Manager ã«ç»é²ããŸãã
- Craft > ã·ãŒã¯ã¬ãã ããã·ãŒã¯ã¬ãããæ°èŠäœæ
- åå ã«ãããããããååãå ¥å
- ã¡ã¢ããŠãããAPI v2 ã¢ããªã®ã¢ã¯ã»ã¹ããŒã¯ã³ã ã·ãŒã¯ã¬ããã®å€ ã«å
¥åããäœæ
- ã·ãŒã¯ã¬ããåãã¡ã¢ããŠãã
3. Craft Functionsã®ãã¡ã³ã¯ã·ã§ã³ãäœæãã
Craft Functionsã®ãã¡ã³ã¯ã·ã§ã³ãäœæããŸããäœææé ã¯æ¬¡ã®éãã§ãã
-
Craft > ãã¡ã³ã¯ã·ã§ã³ > æ°èŠäœæ > ãã³ãã¬ãŒãããäœæ ãéžæ
-
ã Craft FunctionsãšCraft Counterã§åœããäžéæ°ã®ããããåŒãæœçãå®è£ ãã ããšãããã³ãã¬ãŒããæ€çŽ¢ãååŸãã¿ã³ãã¯ãªãã¯
-
åæ ãã¿ã³ãã¯ãªãã¯
-
å€æ° ã¿ãã§æ¬¡ã®å€æ°ã®å€ãèšå®ãã
-
PRIZES
-
åœããçš®å¥ã®å称ãèšå®ããŸããã«ã³ãåºåãã§è€æ°æå®å¯èœã§ãã
-
äŸ: 1ç,2ç,3ç
-
LIMITS
-
åœããã®äžéæ°ãèšå®ããŸããã«ã³ãåºåãã§è€æ°æå®å¯èœã§ãPRIZESãšåãé çªã§å¯Ÿå¿ããäžéæ°ãèšå®ããŸãã
-
äŸ: 10,50,100
-
LOSE_PROBABILITY
-
ããºã¬ã®ç¢ºçãèšå®ããŸãã0ãã1ã®éã®å°æ°å€ã§æå®ããŸãã
-
äŸ: 0.5
-
USER_PARTICIPATION_INTERVAL_MINUTES
-
åäžãŠãŒã¶ãŒãããåŒãã«é£ç¶ããŠåå ã§ããªãæéãååäœã§èšå®ããŸãã0ãæå®ãããšå¶éãªãã«ãªããŸãã
-
KARTE_APP_TOKEN_SECRET
-
æé 2ã§ã¡ã¢ããKARTE API v2ã¢ããªã®ã¢ã¯ã»ã¹ããŒã¯ã³ã®ã·ãŒã¯ã¬ããåãèšå®ããŸãã
-
ãã®ä»ã®å€æ°ã¯ãã²ãšãŸãããã©ã«ãå€ã®ãŸãŸã§åé¡ãããŸãã
-
ä¿å ãã
-
ãããã€å®äºåŸãèšå® > ãã¡ã³ã¯ã·ã§ã³ã®æå¹å ã«ãã§ãã¯ãä»ãã
åœããå€å®ã®ããžãã¯ã«ã€ããŠ
ãã®ãã³ãã¬ãŒãã«ãããåœãã/ã¯ãããå€å®ããããžãã¯ã«ã€ããŠèª¬æããŸããåè³åã®åœãã確çã¯ã次ã®ããã«èšç®ãããŸãïŒ
- ãã®è³åã®åœããæ®æ° / å šäœã®åœããæ®æ° * (1 - ã¯ãã確ç)
次ã®ãããªç¶æ³ãå ·äœäŸãšããŠæ³å®ããŸãïŒ
- PRIZES: 1ç,2ç,3ç
- LIMITS: 10,50,100
- LOSE_PROBABILITY: 0.5
åæç¶æ ã§ã®ç¢ºçã¯ã次ã®éãã§ãïŒ
-
ã¯ããã®ç¢ºç: 0.5
-
åœããã®ç¢ºç: 0.5
-
å ã1çã®åœéžç¢ºç: 10 / (10 + 50 + 100) * 0.5 â 0.031 (çŽ3.1%)
-
å ã2çã®åœéžç¢ºç: 50 / (10 + 50 + 100) * 0.5 â 0.156 (çŽ15.6%)
-
å ã3çã®åœéžç¢ºç: 100 / (10 + 50 + 100) * 0.5 â 0.313 (çŽ31.3%)
ããšãã°1çãæ®ã6åã2çãæ®ã15åã3çãæ®ã40åã«ãªã£ãå Žåã®ç¢ºçã¯æ¬¡ã®éãã§ãïŒ
-
ã¯ããã®ç¢ºç: 0.5
-
åœããã®ç¢ºç: 0.5
-
å ã1çã®åœéžç¢ºç: 6 / (6 + 15 + 40) * 0.5 â 0.049 (çŽ4.9%)
-
å ã2çã®åœéžç¢ºç: 15 / (6 + 15 + 40) * 0.5 â 0.123 (çŽ12.3%)
-
å ã3çã®åœéžç¢ºç: 40 / (6 + 15 + 40) * 0.5 â 0.328 (çŽ32.8%)
ããã«ãããåçã«ååœããã®ç¢ºçãå€åããŸãã åœããæ®æ°ãç¡ããªã£ãè³åã¯èªåã§åœãã確çã0ã«ãªããããåœãããªããªããŸãã
ãªãããã³ãã¬ãŒãã®ãœãŒã¹ã³ãŒãã¯GitHubã§å ¬éããŠããŸãã
craft-codes/craft-functions/lottery-with-limits-of-wins at main · plaidev/craft-codes
4. Craft Functionsã®ãšã³ããã€ã³ããäœæãã
äœæãããã¡ã³ã¯ã·ã§ã³ãå€éšããå®è¡ã§ããããã«ããããã®ãšã³ããã€ã³ããäœæããŸãã
- äœæãããã¡ã³ã¯ã·ã§ã³ã®ç·šéç»é¢ãã èšå® > ãšã³ããã€ã³ã > äœæ ãã¯ãªãã¯
- 衚瀺ããããšã³ããã€ã³ãURLãã¡ã¢ããŠãã
5. æ¥å®¢ãµãŒãã¹ãäœæãã
ããåŒãæ©èœããŠãŒã¶ãŒã«æäŸããããã«ãKARTEã®æ¥å®¢ã¢ã¯ã·ã§ã³ãå©çšããŠãããåŒãç»é¢ããããã¢ãã圢åŒã§äœæããŸãã ãã®ãããã¢ããã¯ãèšå®ããæéå ã«ããåŒãã«åå ããŠããªããŠãŒã¶ãŒã«å¯ŸããŠè¡šç€ºãããŸãã
ããåŒãã¢ã¯ã·ã§ã³ã®JavaScriptå®è£
以äžã®JavaScriptã³ãŒãã¯ããŠãŒã¶ãŒãããããåŒãããã¿ã³ãã¯ãªãã¯ããéã«å®è¡ãããŸãã ãã®ã³ãŒãã¯ãããåŒãã®ãªã¯ãšã¹ããéä¿¡ããåœãã/ããºã¬ã®çµæã«å¿ããŠstateãæŽæ°ããŸãã CRAFT_ENDPOINT_URLã¯æé 4ã§ã¡ã¢ãããšã³ããã€ã³ãURLã«çœ®ãæããŠãã ããã LOTTERY_KEYã¯ããåŒãæœçå士ãåºå¥ããããã®èå¥åã§ããåœããæã®ã€ãã³ãçã«å«ãŸããŸãã
var CRAFT_ENDPOINT_URL = “https://xxx.cev2.karte.io/functions/yyyyy";var LOTTERY_KEY = “lottery_key”;widget.setVal(“isLoading”, false);widget.method(“onClick”, function () { // Display loading indicator until the request is complete widget.setVal(“isLoading”, true); // Send the lottery request fetchData(function (item, error) { if (error) { console.error(error); widget.setState(3); // State for error: not winning } else { widget.setVal(“result”, item.result); // Change the state based on whether a prize was won if (item.result && item.result !== “No prize won”) { widget.setState(2); // State for winning } else { widget.setState(3); // State for not winning } } widget.setVal(“isLoading”, false); });});function fetchData(cb) { var payload = { userId: “#{user_id}”, lotteryKey: LOTTERY_KEY, }; fetch(CRAFT_ENDPOINT_URL, { method: “POST”, headers: { “Content-Type”: “application/json”, }, body: JSON.stringify(payload), }) .then(function (response) { return response.json(); }) .then(function (item) { cb(item); }) .catch(function (err) { cb(null, err); });}widget.show();
ããåŒããããã¢ããã®å®è£
ããåŒãã®çµæã«å¿ããŠè¡šç€ºãããæ¥å®¢ãµãŒãã¹ã¯ä»¥äžã®éãã§ãã ãŠãŒã¶ãŒãããããåŒãããã¿ã³ãã¯ãªãã¯ãããšãJavaScriptãCraft Functionsãžãªã¯ãšã¹ããéä¿¡ããçµæã«å¿ããŠåœãããŸãã¯ããºã¬ã®ç»é¢ã衚瀺ãããŸãã
<div class=“karte-temp-whole”> <div class=“karte-temp-state1” krt-if=“state==1”> <i class=“karte-temp-close karte-close karte-temp-hover” krt-if=”#{close.use}"></i> <div class=“karte-temp-card”> <div class=“karte-temp-mainvisual”><img src="#{mainvisual}" alt="#{mainvisual_alt}" /></div> <div class=“karte-temp-wrap”> <div class=“karte-temp-title”>#{title}</div> <div class=“karte-temp-description”>#{description}</div> <a class=“karte-temp-btn karte-temp-hover” krt-on:click=“onClick”> <span krt-if="!isLoading">#{btn}</span> <div krt-else class=“drawing”> <i class=“loader” aria-hidden=“true”></i> #{loading_btn} </span> </a> </div> </div> </div> <div class=“karte-temp-state1” krt-if=“state==2”> <i class=“karte-temp-close karte-close karte-temp-hover” krt-if="#{close.use}"></i> <div class=“karte-temp-card”> <div class=“karte-temp-mainvisual”><img src="#{winvisual}" alt="#{winvisual_alt}" /></div> <div class=“karte-temp-wrap”> <div class=“karte-temp-title”>{{result}}#{win_title}</div> </div> </div> </div> <div class=“karte-temp-state1” krt-if=“state==3”> <i class=“karte-temp-close karte-close karte-temp-hover” krt-if="#{close.use}"></i> <div class=“karte-temp-card”> <div class=“karte-temp-mainvisual”><img src="#{losevisual}" alt="#{losevisual_alt}" /></div> <div class=“karte-temp-wrap”> <div class=“karte-temp-title”>#{lose_title}</div> </div> </div> </div></div>å®éã«ã¯æ¥å®¢ãµãŒãã¹ãé ä¿¡ãããç¶æ³ã«åãããé ä¿¡èšå®ãå®æœããŠãã ããã
å®éã«åãããŠã¿ã
èšå®ãå®äºããããå®éã«åäœã確èªããŠã¿ãŸãããã
ãŸãã¯ããããåŒããã¿ã³ãæŒäžãããšããããå§ããŸããããåŒããå§ãŸããçµæã衚瀺ãããããã»ã¹ã以äžã®ç»åã§ç¢ºèªã§ããŸãã
次ã«ãèšå®ãå€æŽããŠãåœããã®äžéæ°ã0ã«ããŠã¿ãŸããããã«ããããã¹ãŠã®ãŠãŒã¶ãŒãããºã¬ã«ãªãã¯ãã§ãã
äžèšã®èšå®å€æŽåŸãå床ãããåŒããã¿ã³ãæŒäžãããšã以äžã®ããã«ããºã¬ãåºãããšã確èªã§ããŸãã
ããåŒãæ©èœã®åäœç¢ºèªãè¡ããŠãèšå®ã«å¿ããçµæãåŸãããããšãããããŸããã
ããåŒãã€ãã³ãã®éä¿¡ã«ã€ããŠ
ããåŒãããããšãåœãããããºã¬ã®çµæã«å¿ããŠã€ãã³ããFunctionsããéä¿¡ãããŸãã
- åœããã®ã€ãã³ã:
- ããºã¬ã®ã€ãã³ã:
äŸãã°ãéçšäžã§åœãããŠãŒã¶ãŒã®äžèŠ§ãæœåºãããå Žåãªã©ã察象è ãDatahubã¯ãšãªã§æœåºããããšãå¯èœã§ãã
ãããã«
æ¬èšäºã§ã¯ãCraft FunctionsãšCraft Counterã䜿ã£ãŠãåœããäžéæ°ãèæ ®ããããåŒãæœçã®äœãæ¹ãã玹ä»ããŸããã
ä»åã®ãœãªã¥ãŒã·ã§ã³ã§ã¯åœãã確çãåœããæ®æ°ã«å¿ããŠå€åããããããäºå®ããŠããæ°ããåœããæ°ãåºããŠããŸã£ãããšããäºæ ããéçšã®æéããããã«èªåã§é¿ããããšãã§ããŸãã
ãã¬ã€ãã§ã¯ãäžã®äžã«ã€ã³ãã¯ããäžããæ°ãããœãªã¥ãŒã·ã§ã³ãäžç·ã«ã€ãã仲éãåéããŠããŸãïŒãã²æ°è»œã«ãåãåãããã ããã
â ããŒãããŒäŒæ¥ã«ãªããã
- CustomerData-Driven Solution ãäžç·ã«åµããŸãããïŒ | PLAID Ecosystem
â PLAIDã§åããã
- Customer Engineer | åéããžã·ã§ã³ | æ ªåŒäŒç€Ÿãã¬ã€ã
- Product Engineer | åéããžã·ã§ã³ | æ ªåŒäŒç€Ÿãã¬ã€ã
æ¬èšäºã§çŽ¹ä»ããããåŒãæœçã®æçµçãªã¢ãŠããããã¯ã以äžã®ã€ã¡ãŒãžå³ã®éãã§ãã
ãã®ã€ã¡ãŒãžã¯ããŠãŒã¶ãŒããèŠããããåŒãã®çµæç»é¢ãè¡šããŠãããåœãããããºã¬ãçŽæçã«ç解ã§ããæ¥å®¢ã¢ã¯ã·ã§ã³ã«ãªã£ãŠããŸãã
ããã«ãã·ã¹ãã ã®å šäœæ§æã瀺ããå³ã以äžã«ç€ºããŸãã
ãã®å³ã¯ããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«åºã¥ããŠCraft Functionsãã©ã®ããã«åäœããåœãããåºãåæ°ã管çãã€ã€ãçµæãšããŠåœãããŸãã¯ããºã¬ãè¿ãã®ãã瀺ããŠããŸãã
泚æç¹
ãã®æœçãå®æœããåã«ã以äžã®ç¹ã«æ³šæããŠãã ããã
-
Craftã®Growthãã©ã³ä»¥äžãå©çšããŠããããšãåæãšããŠããŸãã
-
å®éã«ããåŒãæœçãè¡ãéã«ã¯ãããåŒãAPIã®äžæ£å©çšãé²ãããã«èªèšŒã·ã¹ãã ãšã®é£æºçãæ€èšããŠãã ããã
-
æ¬èšäºã§ã¯ãåäžãŠãŒã¶ãŒãããåŒãã«åå ã§ããã®ã¯èšå®ããæéééã«1åã«ããããšã§ãç°¡æçã«äžæ£å©çšãé²ããããªèšå®ãšããŠããŸãã
-
åœéžãŠãŒã¶ãŒã®äžèŠ§ãæœåºãããå ŽåãDatahubã®å¥çŽãå¿ èŠã«ãªããŸã
-
åœéžãŠãŒã¶ãŒã®ç®¡çãã/track/event/write APIçµç±ã§çºçãããKARTEã®ã€ãã³ãã§å®æœããŸããAPIã®åéãªã¯ãšã¹ãå¶éãè¶ ããå Žåã¯ãäžéãåŒãäžããå¿ èŠããããŸã
-
å®éã«ãã®ãããªæœçãéçšããå Žåã«ã¯ãæ¯å衚瀺æ³ã®èŠ³ç¹ãããåœããæ®æ°ã0ã«ãªã£ãæç¹ã§éããã«ãã£ã³ããŒã³ãçµäºããŠãã ããã
èšå®æé
èšå®ã®æé ã¯æ¬¡ã®éãã§ãã
- API v2 ã¢ããªãäœæãã
- API v2 ã¢ããªã® ã¢ã¯ã»ã¹ããŒã¯ã³ã Craft Secret Manager ã«ç»é²ãã
- Craft Functionsã®ãã¡ã³ã¯ã·ã§ã³ãäœæãã
- Craft Functionsã®ãšã³ããã€ã³ããäœæãã
- ã»ã°ã¡ã³ããäœæãã
- æ¥å®¢ãµãŒãã¹ãäœæãã é çªã«èŠãŠã¿ãŸãããã
1. API v2 ã¢ããªãäœæãã
KARTEã®APIãå©çšããããã«ãAPI v2ã¢ããªãäœæããŸãã
- ã¹ã㢠> API v2èšå® ããã¢ããªãæ°èŠäœæ
- ã¢ããªã¿ã€ã ã token ã«èšå®
-
å¿ èŠãªscopeãè¿œå
-
track.event.write
-
ã¢ããªãä¿åããäžåºŠã ã衚瀺ãããã¢ã¯ã»ã¹ããŒã¯ã³ãã¡ã¢ããŠãã
2. API v2 ã¢ããªã® ã¢ã¯ã»ã¹ããŒã¯ã³ã Craft Secret Manager ã«ç»é²ãã
API v2 ã¢ããªã®ã¢ã¯ã»ã¹ããŒã¯ã³ãCraft Functionsããå®å šã«å©çšããããã«ãCraft Secret Manager ã«ç»é²ããŸãã
- Craft > ã·ãŒã¯ã¬ãã ããã·ãŒã¯ã¬ãããæ°èŠäœæ
- åå ã«ãããããããååãå ¥å
- ã¡ã¢ããŠãããAPI v2 ã¢ããªã®ã¢ã¯ã»ã¹ããŒã¯ã³ã ã·ãŒã¯ã¬ããã®å€ ã«å
¥åããäœæ
- ã·ãŒã¯ã¬ããåãã¡ã¢ããŠãã
3. Craft Functionsã®ãã¡ã³ã¯ã·ã§ã³ãäœæãã
Craft Functionsã®ãã¡ã³ã¯ã·ã§ã³ãäœæããŸããäœææé ã¯æ¬¡ã®éãã§ãã
-
Craft > ãã¡ã³ã¯ã·ã§ã³ > æ°èŠäœæ > ãã³ãã¬ãŒãããäœæ ãéžæ
-
ã Craft FunctionsãšCraft Counterã§åœããäžéæ°ã®ããããåŒãæœçãå®è£ ãã ããšãããã³ãã¬ãŒããæ€çŽ¢ãååŸãã¿ã³ãã¯ãªãã¯
-
åæ ãã¿ã³ãã¯ãªãã¯
-
å€æ° ã¿ãã§æ¬¡ã®å€æ°ã®å€ãèšå®ãã
-
PRIZES
-
åœããçš®å¥ã®å称ãèšå®ããŸããã«ã³ãåºåãã§è€æ°æå®å¯èœã§ãã
-
äŸ: 1ç,2ç,3ç
-
LIMITS
-
åœããã®äžéæ°ãèšå®ããŸããã«ã³ãåºåãã§è€æ°æå®å¯èœã§ãPRIZESãšåãé çªã§å¯Ÿå¿ããäžéæ°ãèšå®ããŸãã
-
äŸ: 10,50,100
-
LOSE_PROBABILITY
-
ããºã¬ã®ç¢ºçãèšå®ããŸãã0ãã1ã®éã®å°æ°å€ã§æå®ããŸãã
-
äŸ: 0.5
-
USER_PARTICIPATION_INTERVAL_MINUTES
-
åäžãŠãŒã¶ãŒãããåŒãã«é£ç¶ããŠåå ã§ããªãæéãååäœã§èšå®ããŸãã0ãæå®ãããšå¶éãªãã«ãªããŸãã
-
KARTE_APP_TOKEN_SECRET
-
æé 2ã§ã¡ã¢ããKARTE API v2ã¢ããªã®ã¢ã¯ã»ã¹ããŒã¯ã³ã®ã·ãŒã¯ã¬ããåãèšå®ããŸãã
-
ãã®ä»ã®å€æ°ã¯ãã²ãšãŸãããã©ã«ãå€ã®ãŸãŸã§åé¡ãããŸãã
-
ä¿å ãã
-
ãããã€å®äºåŸãèšå® > ãã¡ã³ã¯ã·ã§ã³ã®æå¹å ã«ãã§ãã¯ãä»ãã
åœããå€å®ã®ããžãã¯ã«ã€ããŠ
ãã®ãã³ãã¬ãŒãã«ãããåœãã/ã¯ãããå€å®ããããžãã¯ã«ã€ããŠèª¬æããŸããåè³åã®åœãã確çã¯ã次ã®ããã«èšç®ãããŸãïŒ
- ãã®è³åã®åœããæ®æ° / å šäœã®åœããæ®æ° * (1 - ã¯ãã確ç)
次ã®ãããªç¶æ³ãå ·äœäŸãšããŠæ³å®ããŸãïŒ
- PRIZES: 1ç,2ç,3ç
- LIMITS: 10,50,100
- LOSE_PROBABILITY: 0.5
åæç¶æ ã§ã®ç¢ºçã¯ã次ã®éãã§ãïŒ
-
ã¯ããã®ç¢ºç: 0.5
-
åœããã®ç¢ºç: 0.5
-
å ã1çã®åœéžç¢ºç: 10 / (10 + 50 + 100) * 0.5 â 0.031 (çŽ3.1%)
-
å ã2çã®åœéžç¢ºç: 50 / (10 + 50 + 100) * 0.5 â 0.156 (çŽ15.6%)
-
å ã3çã®åœéžç¢ºç: 100 / (10 + 50 + 100) * 0.5 â 0.313 (çŽ31.3%)
ããšãã°1çãæ®ã6åã2çãæ®ã15åã3çãæ®ã40åã«ãªã£ãå Žåã®ç¢ºçã¯æ¬¡ã®éãã§ãïŒ
-
ã¯ããã®ç¢ºç: 0.5
-
åœããã®ç¢ºç: 0.5
-
å ã1çã®åœéžç¢ºç: 6 / (6 + 15 + 40) * 0.5 â 0.049 (çŽ4.9%)
-
å ã2çã®åœéžç¢ºç: 15 / (6 + 15 + 40) * 0.5 â 0.123 (çŽ12.3%)
-
å ã3çã®åœéžç¢ºç: 40 / (6 + 15 + 40) * 0.5 â 0.328 (çŽ32.8%)
ããã«ãããåçã«ååœããã®ç¢ºçãå€åããŸãã åœããæ®æ°ãç¡ããªã£ãè³åã¯èªåã§åœãã確çã0ã«ãªããããåœãããªããªããŸãã
ãªãããã³ãã¬ãŒãã®ãœãŒã¹ã³ãŒãã¯GitHubã§å ¬éããŠããŸãã
craft-codes/craft-functions/lottery-with-limits-of-wins at main · plaidev/craft-codes
4. Craft Functionsã®ãšã³ããã€ã³ããäœæãã
äœæãããã¡ã³ã¯ã·ã§ã³ãå€éšããå®è¡ã§ããããã«ããããã®ãšã³ããã€ã³ããäœæããŸãã
- äœæãããã¡ã³ã¯ã·ã§ã³ã®ç·šéç»é¢ãã èšå® > ãšã³ããã€ã³ã > äœæ ãã¯ãªãã¯
- 衚瀺ããããšã³ããã€ã³ãURLãã¡ã¢ããŠãã
5. æ¥å®¢ãµãŒãã¹ãäœæãã
ããåŒãæ©èœããŠãŒã¶ãŒã«æäŸããããã«ãKARTEã®æ¥å®¢ã¢ã¯ã·ã§ã³ãå©çšããŠãããåŒãç»é¢ããããã¢ãã圢åŒã§äœæããŸãã ãã®ãããã¢ããã¯ãèšå®ããæéå ã«ããåŒãã«åå ããŠããªããŠãŒã¶ãŒã«å¯ŸããŠè¡šç€ºãããŸãã
ããåŒãã¢ã¯ã·ã§ã³ã®JavaScriptå®è£
以äžã®JavaScriptã³ãŒãã¯ããŠãŒã¶ãŒãããããåŒãããã¿ã³ãã¯ãªãã¯ããéã«å®è¡ãããŸãã ãã®ã³ãŒãã¯ãããåŒãã®ãªã¯ãšã¹ããéä¿¡ããåœãã/ããºã¬ã®çµæã«å¿ããŠstateãæŽæ°ããŸãã CRAFT_ENDPOINT_URLã¯æé 4ã§ã¡ã¢ãããšã³ããã€ã³ãURLã«çœ®ãæããŠãã ããã LOTTERY_KEYã¯ããåŒãæœçå士ãåºå¥ããããã®èå¥åã§ããåœããæã®ã€ãã³ãçã«å«ãŸããŸãã
var CRAFT_ENDPOINT_URL = “https://xxx.cev2.karte.io/functions/yyyyy";var LOTTERY_KEY = “lottery_key”;widget.setVal(“isLoading”, false);widget.method(“onClick”, function () { // Display loading indicator until the request is complete widget.setVal(“isLoading”, true); // Send the lottery request fetchData(function (item, error) { if (error) { console.error(error); widget.setState(3); // State for error: not winning } else { widget.setVal(“result”, item.result); // Change the state based on whether a prize was won if (item.result && item.result !== “No prize won”) { widget.setState(2); // State for winning } else { widget.setState(3); // State for not winning } } widget.setVal(“isLoading”, false); });});function fetchData(cb) { var payload = { userId: “#{user_id}”, lotteryKey: LOTTERY_KEY, }; fetch(CRAFT_ENDPOINT_URL, { method: “POST”, headers: { “Content-Type”: “application/json”, }, body: JSON.stringify(payload), }) .then(function (response) { return response.json(); }) .then(function (item) { cb(item); }) .catch(function (err) { cb(null, err); });}widget.show();
ããåŒããããã¢ããã®å®è£
ããåŒãã®çµæã«å¿ããŠè¡šç€ºãããæ¥å®¢ãµãŒãã¹ã¯ä»¥äžã®éãã§ãã ãŠãŒã¶ãŒãããããåŒãããã¿ã³ãã¯ãªãã¯ãããšãJavaScriptãCraft Functionsãžãªã¯ãšã¹ããéä¿¡ããçµæã«å¿ããŠåœãããŸãã¯ããºã¬ã®ç»é¢ã衚瀺ãããŸãã
<div class=“karte-temp-whole”> <div class=“karte-temp-state1” krt-if=“state==1”> <i class=“karte-temp-close karte-close karte-temp-hover” krt-if=”#{close.use}"></i> <div class=“karte-temp-card”> <div class=“karte-temp-mainvisual”><img src="#{mainvisual}" alt="#{mainvisual_alt}" /></div> <div class=“karte-temp-wrap”> <div class=“karte-temp-title”>#{title}</div> <div class=“karte-temp-description”>#{description}</div> <a class=“karte-temp-btn karte-temp-hover” krt-on:click=“onClick”> <span krt-if="!isLoading">#{btn}</span> <div krt-else class=“drawing”> <i class=“loader” aria-hidden=“true”></i> #{loading_btn} </span> </a> </div> </div> </div> <div class=“karte-temp-state1” krt-if=“state==2”> <i class=“karte-temp-close karte-close karte-temp-hover” krt-if="#{close.use}"></i> <div class=“karte-temp-card”> <div class=“karte-temp-mainvisual”><img src="#{winvisual}" alt="#{winvisual_alt}" /></div> <div class=“karte-temp-wrap”> <div class=“karte-temp-title”>{{result}}#{win_title}</div> </div> </div> </div> <div class=“karte-temp-state1” krt-if=“state==3”> <i class=“karte-temp-close karte-close karte-temp-hover” krt-if="#{close.use}"></i> <div class=“karte-temp-card”> <div class=“karte-temp-mainvisual”><img src="#{losevisual}" alt="#{losevisual_alt}" /></div> <div class=“karte-temp-wrap”> <div class=“karte-temp-title”>#{lose_title}</div> </div> </div> </div></div>å®éã«ã¯æ¥å®¢ãµãŒãã¹ãé ä¿¡ãããç¶æ³ã«åãããé ä¿¡èšå®ãå®æœããŠãã ããã
å®éã«åãããŠã¿ã
èšå®ãå®äºããããå®éã«åäœã確èªããŠã¿ãŸãããã
ãŸãã¯ããããåŒããã¿ã³ãæŒäžãããšããããå§ããŸããããåŒããå§ãŸããçµæã衚瀺ãããããã»ã¹ã以äžã®ç»åã§ç¢ºèªã§ããŸãã
次ã«ãèšå®ãå€æŽããŠãåœããã®äžéæ°ã0ã«ããŠã¿ãŸããããã«ããããã¹ãŠã®ãŠãŒã¶ãŒãããºã¬ã«ãªãã¯ãã§ãã
äžèšã®èšå®å€æŽåŸãå床ãããåŒããã¿ã³ãæŒäžãããšã以äžã®ããã«ããºã¬ãåºãããšã確èªã§ããŸãã
ããåŒãæ©èœã®åäœç¢ºèªãè¡ããŠãèšå®ã«å¿ããçµæãåŸãããããšãããããŸããã
ããåŒãã€ãã³ãã®éä¿¡ã«ã€ããŠ
ããåŒãããããšãåœãããããºã¬ã®çµæã«å¿ããŠã€ãã³ããFunctionsããéä¿¡ãããŸãã
- åœããã®ã€ãã³ã:
- ããºã¬ã®ã€ãã³ã:
äŸãã°ãéçšäžã§åœãããŠãŒã¶ãŒã®äžèŠ§ãæœåºãããå Žåãªã©ã察象è ãDatahubã¯ãšãªã§æœåºããããšãå¯èœã§ãã
ãããã«
æ¬èšäºã§ã¯ãCraft FunctionsãšCraft Counterã䜿ã£ãŠãåœããäžéæ°ãèæ ®ããããåŒãæœçã®äœãæ¹ãã玹ä»ããŸããã
ä»åã®ãœãªã¥ãŒã·ã§ã³ã§ã¯åœãã確çãåœããæ®æ°ã«å¿ããŠå€åããããããäºå®ããŠããæ°ããåœããæ°ãåºããŠããŸã£ãããšããäºæ ããéçšã®æéããããã«èªåã§é¿ããããšãã§ããŸãã
ãã¬ã€ãã§ã¯ãäžã®äžã«ã€ã³ãã¯ããäžããæ°ãããœãªã¥ãŒã·ã§ã³ãäžç·ã«ã€ãã仲éãåéããŠããŸãïŒãã²æ°è»œã«ãåãåãããã ããã
â ããŒãããŒäŒæ¥ã«ãªããã
- CustomerData-Driven Solution ãäžç·ã«åµããŸãããïŒ | PLAID Ecosystem
â PLAIDã§åããã
- Customer Engineer | åéããžã·ã§ã³ | æ ªåŒäŒç€Ÿãã¬ã€ã
- Product Engineer | åéããžã·ã§ã³ | æ ªåŒäŒç€Ÿãã¬ã€ã
Tags :- Craft Functions
- KARTE Web/App
Share :-
-
Craft Functions
-
KARTE Web/App
ãã®SolutionãKARTE Craftã§å©çšããâ»KARTE CraftããŸã æå¹åããŠããªãå Žåã¯ãã¡ããããåãåãããã ããïŒ
FAQ
ãã¿ã ãããšäŒŒããã€ã¯äœã§ããïŒ
ããïŒãã¿ããïŒãã¿ã ããïŒå®ããïŒçŠåŒã ã®å ±éããæå³ åã圢ã®å€ãã®çŽãæšãªã©ã«ãæ°åãæå笊å·ãèªå¥ãªã©ãèšãããããåèªã«åŒãããããš
ãã¿ã ãããšäŒŒããã€ã¯äœã§ããïŒ
ããïŒãã¿ããïŒãã¿ã ããïŒå®ããïŒçŠåŒã ã®å ±éããæå³ åã圢ã®å€ãã®çŽãæšãªã©ã«ãæ°åãæå笊å·ãèªå¥ãªã©ãèšãããããåèªã«åŒãããããš
ãã³ãŽã«ãŒã¬ããã¢ããªã®ããããã¯ïŒ
æŒããã®èª°ã !? ã¯ããã¬ãã§ããèŠãããŒã¿ã©ã€ã¶ãŒ(ãââã ãšæã人ãã¹ã€ãããªã³!ãã£ãŠã¢ã³ã±ãŒãã§äœ¿ãããæ©æ¢°)ãåçŸããã¢ããªã§ãã ã
æœéžã¢ããªãšã¯äœã§ããïŒ
倧人æ°ã§ã®åœçªãã°ã«ãŒã決ããããŒãã£ãŒã§ã®ãã¬ãŒã³ã亀æãã¯ããŸãä»æ¥ã®ç®ç«ãªã©ããããšæ±ºãããããšããããšãã«äŸ¿å©ãªã¹ããã®ãæœéžã¢ããª
ãªã³ã©ã€ã³ã«ãžãã®å°å
¥ã¯ã«ãŒã¬ããã²ãŒã ã«ã©ã®ãããªåœ±é¿ãäžããŸããã?
ãªã³ã©ã€ã³ã«ãžãã®å°å ¥ã¯ã«ãŒã¬ããã²ãŒã ã«ã©ã®ãããªåœ±é¿ãäžããŸããã? ãªã³ã©ã€ã³ã«ãžãã®å°å ¥ã¯ã«ãŒã¬ããã²ãŒã ã«å€§ããªåœ±é¿ãäžããŸããããª
æœéžã¢ããªãšã¯äœã§ããïŒ
倧人æ°ã§ã®åœçªãã°ã«ãŒã決ããããŒãã£ãŒã§ã®ãã¬ãŒã³ã亀æãã¯ããŸãä»æ¥ã®ç®ç«ãªã©ããããšæ±ºãããããšããããšãã«äŸ¿å©ãªã¹ããã®ãæœéžã¢ããª
æœéžã¢ããªãšã¯äœã§ããïŒ
倧人æ°ã§ã®åœçªãã°ã«ãŒã決ããããŒãã£ãŒã§ã®ãã¬ãŒã³ã亀æãã¯ããŸãä»æ¥ã®ç®ç«ãªã©ããããšæ±ºãããããšããããšãã«äŸ¿å©ãªã¹ããã®ãæœéžã¢ããª
æ ç»ãæåŠãªã©ã®å€§è¡æåã«ãããŠã«ãŒã¬ããã¯ã©ã®ãããªåœ¹å²ãæãããŸããã?
ã«ãŒã¬ããã¯æ ç»ãæåŠãªã©ã®å€§è¡æåã®äžã§ã©ã®ãããªåœ¹å²ãæãããŸããã? ã«ãŒã¬ããã¯å€§è¡æåã«ãããŠéèŠãªåœ¹å²ãæãããŠãããæ°å€ãã®æ ç»
ãã³ãŽã«ãŒã¬ããã¢ããªã®ããããã¯ïŒ
æŒããã®èª°ã !? ã¯ããã¬ãã§ããèŠãããŒã¿ã©ã€ã¶ãŒ(ãââã ãšæã人ãã¹ã€ãããªã³!ãã£ãŠã¢ã³ã±ãŒãã§äœ¿ãããæ©æ¢°)ãåçŸããã¢ããªã§ãã ã
倧人æ°ã§ã®åœçªãã°ã«ãŒã決ããããŒãã£ãŒã§ã®ãã¬ãŒã³ã亀æãã¯ããŸãä»æ¥ã®ç®ç«ãªã©ããããšæ±ºãããããšããããšãã«äŸ¿å©ãªã¹ããã®ãæœéžã¢ããªããããåŒããã«ãŒã¬ãããªã©ãæœéžã®æ¹æ³ã¯ã¢ããªã«ãã£ãŠããŸããŸã§ãã现ããªä»æ§ãã¢ããªã«ãã£ãŠç°ãªãã®ã§ãçµå±ã©ããããã®ããããã«ããã§ããããããã§ä»åã¯ãæœéžã¢ããªã®ãããã人æ°ã©ã³ãã³ã°ãšããã®éžã³æ¹ãã玹ä»ããŸããiPhoneãiPadãAndroidã§äœ¿çšã§ããã¢ããªãå€æ°ããã¯ã¢ããããŠããŸãã®ã§ããã²åèã«ããŠãã ãããïŒç¡æã§äœ¿ãããã®ããããŸãã
ãã®ãµã€ãã§ã¯é¢é£ããèšäºã®ã¿ãåéããŠããŸãããªãªãžãã«ã衚瀺ããã«ã¯ã以äžã®ãªã³ã¯ãã³ããŒããŠéããŠãã ãããCraft FunctionsãšCraft Counterã§åœããäžéæ°ã®ããããåŒãæœçãå®è£ ãã