アクセスバス予約サービス
私は、私たちの一人一人が、過去に長い旅をしたし、途中でドロップせずに表現する車両を見つける必要があったことを非常に確信しています.チャンスはあなたの予約オフィスに行って、チケットを取得し、あなたのバスが到着するのを待って、それからボードを離陸.あなたが手動で駅に行く必要があることに注意してください、キューをあなたのフライトチケットを取得します.
これはすべての罰金を与えられる場合は、状況を与えられているが、私たちはあなたの家に座っている間、バスを予約することができますように、あなたのバスのための時間が来たときに旅を開始する必要がありますように、バスのチケットを取得するこのプロセスをデジタル化することができます教えてください.我々は、方法を見に行くつもりです.
ここでは、DJangoを使用してUSSDバス予約システムを作成します. ユーザーはシステム内のすべてのバスを問い合わせることができます ユーザーはバスを予約することができます ユーザーは、フライトのステータスを確認することができます ユーザーは自分のフライトをキャンセルすることができます ユーザーは文句を報告することができます USSDサービスが可能になりましたAfrica'sTalking . 我々は、アプリケーションの実生活のシナリオをシミュレートするためにサンドボックス環境を使用します.更なる話なしで始めましょう!
新しいプロジェクトを作成しましょう
次のモデルを作成してデータを保持します.
管理ユーザーを作成し、管理セクションに移動し、テストのために使用するいくつかのバスを追加します.
次に、アプリケーションロジックを書きましょう.オープン
当社のアプリをトンネルするには:
コピーする
あなたのAfrastastalking口座にログインしてください、そして、USSD Partの上でSimulator部クリックをクリックして、新しいセッションをつくるためにクリックしてください.今すぐ追加
フォームを保存します
だから私のために、アプリはダイヤルによって呼び出されます
我々は今、アプリケーションを焼き、我々はサンドボックス環境を設定している.前方に移動し、' USSD 'を選択し、電話を起動するシミュレータを起動します.あなたのコードを入力してください
例えばバスを予約しましょう
プロンプトが終了すると、バスが出る時間を含む完全な情報を返します.
先に行くと他のすべてのオプションをテストし、彼らが提供しているものを参照してください.同様にコードにあなたの創造性を追加します.
あなたがまだここにいるならば、あなたへの帽子.おめでとう.このチュートリアルでは、輸送問題を解決していました.我々は、乗客予約バスを支援し、USSD経由で関連サービスのオフラインの範囲にアクセスするためにゼロから解決策を構築しました.したがって、機能の携帯電話(Kabambe)かスマートフォンのかどうか、彼らはそれを問題なしにすることができます.
それは、私があなたのために持っていたすべてです.あなたが問題に遭遇した場合、または下記のコメントに提案がある場合は私に知らせてください.また、可能ならば、このポストに若干の愛を示してください.
いつものように、あなたはここで、または、よりものすごい内容のために私に続くことができます.
次回まで、歓声!
これはすべての罰金を与えられる場合は、状況を与えられているが、私たちはあなたの家に座っている間、バスを予約することができますように、あなたのバスのための時間が来たときに旅を開始する必要がありますように、バスのチケットを取得するこのプロセスをデジタル化することができます教えてください.我々は、方法を見に行くつもりです.
ここでは、DJangoを使用してUSSDバス予約システムを作成します.
プロジェクト設定
新しいプロジェクトを作成しましょう
mkdir django_ussd && cd django_ussd
virtualenv env
source env/bin/activate
pip install django
django-admin startproject mysite .
python manage.py startapp core
次の追加core
インストールされているアプリケーションの一覧にsettings.py
. 次のモデルを作成してデータを保持します.
from django.db import models
# Create your models here.
class Bus(models.Model):
number_plate=models.CharField(
max_length=10
)
start=models.CharField(
max_length=250
)
finish=models.CharField(
max_length=250
)
price = models.FloatField()
seats=models.IntegerField()
is_available=models.BooleanField(
default=True
)
def __str__(self) -> str:
return self.number_plate
class Booking(models.Model):
STATUS_CHOICES = [
("Awaiting departure", "Awaiting departure"),
("Journey complete", "Journey complete"),
("Cancelled", "Cancelled"),
]
bus = models.ForeignKey(Bus, on_delete=models.CASCADE)
customer = models.CharField(max_length = 150)
seat=models.IntegerField(default=0)
date = models.DateTimeField(auto_now_add=True)
departure=models.DateTimeField(null=True, blank=True)
status = models.CharField(
max_length = 20,
choices = STATUS_CHOICES,
default = 'Awaiting departure'
)
def __str__(self) -> str:
return self.customer
from django.contrib import admin
admin.site.register(Bus)
admin.site.register(Booking)
我々のBus
クラスは、指定されたバスに関連するすべての詳細がありますBooking
ユーザーチケットを保存します.どうぞmakemigrations
then migrate
.管理ユーザーを作成し、管理セクションに移動し、テストのために使用するいくつかのバスを追加します.
次に、アプリケーションロジックを書きましょう.オープン
views.py
そして以下のコードを追加します.必要であれば、必ずそれを通過し、理解する分を取る.それはかなりまっすぐ前方です.import random
from datetime import datetime, timedelta
from core.models import Booking, Bus
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
# Create your views here.
@csrf_exempt
def index(request):
if request.method == 'POST':
session_id = request.POST.get('sessionId')
service_code = request.POST.get('serviceCode')
phone_number = request.POST.get('phoneNumber')
text = request.POST.get('text')
response = ""
if text == "":
response = "CON Welcome! \n Which service would you like to access? \n"
response += "1. List all our buses \n"
response += "2. Check ticket status \n"
response += "3. Book a bus seat \n"
response += "4. Cancel a booking \n"
response += "5. Report an issue"
#User needs a list of all buses
elif text == "1":
results=Bus.objects.all()
for i in results:
response += f"END {i}:{i.start}-{i.finish} @KSHS{i.price} \n \n"
elif text == "2":
response = "CON Choose an option \n"
response += "1. All tickets \n"
response += "2. Today active tickets"
#Follow up
elif text == '2*1':
tickets=Booking.objects.filter(
customer=phone_number
)
for tkt in tickets:
response += f"END Ticket {tkt.id} on {tkt.departure:%Y-%m-%d %H:%M}"
#Follow up
elif text == '2*2':
now = datetime.now()
tickets=Booking.objects.filter(
customer=phone_number,
departure__date=now
)
if tickets:
for tkt in tickets:
response += f"END Ticket {tkt.id} on {tkt.departure:%Y-%m-%d %H:%M}"
response ='END No tickets found'
#User wants to book a seat
elif text == "3":
response = "CON Okay, pick a route \n"
response += "1. Kericho-Nairobi \n"
response += "2. Kisumu-Eldoret \n"
response += "3. Nakuru-Mombasa \n"
response += "4. Narok-Naivasha "
#Follow up
elif text == '3*1' or '3*2' or '3*3' or '3*4':
seat=random.randint(1,30)
buses=Bus.objects.filter(is_available=True)
buses=[bus for bus in buses]
bus=random.choices(buses)
for i in bus:
bus=i
departure=datetime.now() + timedelta(hours=1)
new_booking=Booking.objects.create(
bus=bus,
customer=phone_number,
seat=seat,
departure=departure
)
response = f"END Alright! Here is your booking info: \n TICKET NO {new_booking.id} \n Bus Number is {bus} \n Your seat number is {seat} \n Your bus leaves at {departure:%H:%M:%S}"
elif text == "4":
response = "END Feature work in progress, check again soon"
elif text == "5":
response = "END Feature work in progress, check again soon"
return HttpResponse(response)
それを考えれば、我々はそれのためのルートを作成するために移動することができます.プロジェクトを更新urls.py
以下のように:from django.contrib import admin
from django.urls import path
from core import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index),
]
そして、それは我々が必要とするすべてでなければなりません.次の部分は、私たちのアプリケーションをインターネットに公開することです.このような素晴らしいツールですNgrok . あなたがすでにいないならば、その指示に従ってあなたのマシンにインストールされてください.当社のアプリをトンネルするには:
ngrok http 8000
結果:コピーする
https
リンクは、次の必要があります.アフリカセットアップ
あなたのAfrastastalking口座にログインしてください、そして、USSD Partの上でSimulator部クリックをクリックして、新しいセッションをつくるためにクリックしてください.今すぐ追加
ngrok
コールバックとして動作する前に作成したリンク.コールバックを知っている必要がある場合はhere is a post . フォームは以下のようになります.フォームを保存します
だから私のために、アプリはダイヤルによって呼び出されます
*384*1827#
あなたのものは少し異なるかもしれませんが、働くべきです.シミュレーション
我々は今、アプリケーションを焼き、我々はサンドボックス環境を設定している.前方に移動し、' USSD 'を選択し、電話を起動するシミュレータを起動します.あなたのコードを入力してください
*384*1827#
. 動作は次のようになります.例えばバスを予約しましょう
プロンプトが終了すると、バスが出る時間を含む完全な情報を返します.
先に行くと他のすべてのオプションをテストし、彼らが提供しているものを参照してください.同様にコードにあなたの創造性を追加します.
包む
あなたがまだここにいるならば、あなたへの帽子.おめでとう.このチュートリアルでは、輸送問題を解決していました.我々は、乗客予約バスを支援し、USSD経由で関連サービスのオフラインの範囲にアクセスするためにゼロから解決策を構築しました.したがって、機能の携帯電話(Kabambe)かスマートフォンのかどうか、彼らはそれを問題なしにすることができます.
それは、私があなたのために持っていたすべてです.あなたが問題に遭遇した場合、または下記のコメントに提案がある場合は私に知らせてください.また、可能ならば、このポストに若干の愛を示してください.
いつものように、あなたはここで、または、よりものすごい内容のために私に続くことができます.
次回まで、歓声!
Reference
この問題について(アクセスバス予約サービス), 我々は、より多くの情報をここで見つけました https://dev.to/nick_langat/access-bus-booking-services-using-django-africastalking-api-51g7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol